Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring бин с совместно используемым состоянием / 15 сообщений из 15, страница 1 из 1
16.03.2014, 17:57
    #38587585
Щиче
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Есть некий singleton бин, который по логике должен иметь в себе часто обновляемую Map. Однако несложный эксперимент показывает, что бин непотокобезопасен. В обычном Java приложении я бы использовал коллекцию из java.util.concurent. Но тут выполнение происходит в контейнере Tomcat, что меня смущает. Ведь по идее контейнер берет управление потоками на себя, а я вмешиваюсь.
Подскажите, гуру, имею ли я право использовать java.util.concurent или уместен иной способ решения проблемы. Какой?
...
Рейтинг: 0 / 0
16.03.2014, 21:26
    #38587640
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
ЩичеОднако несложный эксперимент показывает, что бин непотокобезопасен

а можно поподробнее об эксперименте и его результатах
...
Рейтинг: 0 / 0
16.03.2014, 22:20
    #38587659
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Щиче,
взять singleton СУБД
...
Рейтинг: 0 / 0
16.03.2014, 22:24
    #38587661
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
ЩичеПодскажите, гуру, имею ли я право использовать java.util.concurent или уместен иной способ решения проблемы. Какой?
CuncurrentHashMap используйте на здоровье. Про иные способы Вам никто не скажет пока Вы детально не опишите для чего у Вас в приложении полявилась разделяемая коллекция, то есть не опишите требования к приложению.
...
Рейтинг: 0 / 0
18.03.2014, 09:04
    #38589004
Щиче
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Спасибо за ответ!

Про бин: его задача принимать звонки с АТС. Метод receiveRing дергается когда звонок начинается, hang когда трубка кладется любым способом. Состояние нужно для показа оператору активных звонков. Можно положить в БД и для статистики так и делается. Однако хотелось бы снизить накладные расходы на обмен с БД. Звонков очень много одномоментно, тратить время на непрерывный опрос СУБД не хочется.
...
Рейтинг: 0 / 0
18.03.2014, 09:19
    #38589017
Щиче
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
redwhite90,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class SomeSingletonService {
      List<Integer> list = new ArrayList<>();

     {
               for(int i = 0; i < 500000; i++)
                          list.add(i);
     }

     public void nonThreadSafeMethod {

              list.add(2000, 31337);
              for(Integer item : list) 
                        System.out.println(item);
     }
}



Дает exception ConcurrentModificationException.
...
Рейтинг: 0 / 0
18.03.2014, 15:01
    #38589531
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Щиче,
Код: java
1.
List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());
...
Рейтинг: 0 / 0
18.03.2014, 15:06
    #38589541
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
bochkovЩиче,
Код: java
1.
List<Integer> list = Collections.synchronizedList(new ArrayList<Integer>());


ConcurrentModificationException можно и одним потоком отгрести.
Проблема в итераторе. Синхронизация не спасёт.
...
Рейтинг: 0 / 0
18.03.2014, 15:41
    #38589602
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
для борьбы с итератором
кажись у guava есть list - представление
...
Рейтинг: 0 / 0
18.03.2014, 15:48
    #38589620
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
bochkovдля борьбы с итератором
кажись у guava есть list - представление
Есть куча способов обезопасить итератор. Синхронизация списка к ним не относится.
...
Рейтинг: 0 / 0
18.03.2014, 15:48
    #38589623
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Blazkowicz,
да это понятно
...
Рейтинг: 0 / 0
18.03.2014, 22:30
    #38589993
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Blazkowicz,

Код: java
1.
ConcurrentModificationException



можно без итератора огрести вообще?

BlazkowiczЕсть куча способов обезопасить итератор
поделитесь?
...
Рейтинг: 0 / 0
23.03.2014, 01:54
    #38593803
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
Blazkowicz,
Щичеredwhite90,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
class SomeSingletonService {
      List<Integer> list = new ArrayList<>();

     {
               for(int i = 0; i < 500000; i++)
                          list.add(i);
     }

     public void nonThreadSafeMethod {

              list.add(2000, 31337);
              for(Integer item : list) 
                        System.out.println(item);
     }
}






Дает exception ConcurrentModificationException.


правильно понимаю, что этот код не может вываливать ConcurrentModificationException ?
...
Рейтинг: 0 / 0
23.03.2014, 03:34
    #38593814
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
нельзя одновременно, итерировать лист и добавлять(удалять) элементы
...
Рейтинг: 0 / 0
23.03.2014, 11:58
    #38593868
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring бин с совместно используемым состоянием
bochkov,

да, ступил.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring бин с совместно используемым состоянием / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]