
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 20.06.2019, 10:08 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Всем привет! Является ли хорошей практикой запускать потоки в конструкторе класса?: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:21 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Я-бы рассмотрел ситуацию когда внутри потока (конструктора) бросается RuntimeException и мы выпадаем из конструктора. При этом объект как будто-бы не создан. Тоесть у нас нет данных для анализа. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:30 
 | 
|||
|---|---|---|---|
  
  | 
|||
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Molasarпотоки в конструкторе класса-1 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:34 
 | 
|||
|---|---|---|---|
  
  | 
|||
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Molasar, а если не нужно запускать тред сразу, а потом? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:42 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  http://www.javapractices.com/topic/TopicAction.do?Id=254  There's nothing wrong with creating a thread object in a constructor or static initializer - just don't start it there. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:47 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  TsyklopMolasar, а если не нужно запускать тред сразу, а потом? Как раз и нужно запустить поток один раз и сразу. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:49 
 | 
|||
|---|---|---|---|
  
  | 
|||
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  MolasarTsyklopMolasar, а если не нужно запускать тред сразу, а потом? Как раз и нужно запустить поток один раз и сразу.выше уровнем код покажи. Наверно и там можно "один раз и сразу" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 10:50 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Понял. Всем спасибо. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 12:35 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Лучше не стоит. Ни создавать ни стартовать. И вообще лучше переходить к многопточном коду только после прочтения хотя бы Java Concurrency in Practice, а еще лучше JCIP + Art of Multiprocessor programming ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 14:58 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Molasar, вас не смущает , что size() - не потокобезопасная операция и может exception вывалиться? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 20.06.2019, 15:04 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинMolasar, вас не смущает , что size() - не потокобезопасная операция и может exception вывалиться? всмысле, не exception, а некорректную цифру. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 09:54 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинMolasar, вас не смущает , что size() - не потокобезопасная операция и может exception вывалиться? Уже повалились))) Использую synchronized(Object) {...} ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 09:58 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинОзверинMolasar, вас не смущает , что size() - не потокобезопасная операция и может exception вывалиться? всмысле, не exception, а некорректную цифру. exception были проблемой. eventList.isEmpty() - потокобезопасная операция? Мне важно определить есть ли в списке элементы или нет. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:12 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  MolasarОзверинпропущено... всмысле, не exception, а некорректную цифру. exception были проблемой. eventList.isEmpty() - потокобезопасная операция? Мне важно определить есть ли в списке элементы или нет. вы в итоге делаете это для того, чтобы по 1000 сообщений вставлять в БД?:) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:13 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  MolasarОзверинпропущено... всмысле, не exception, а некорректную цифру. exception были проблемой. eventList.isEmpty() - потокобезопасная операция? Мне важно определить есть ли в списке элементы или нет. If we look inside the isEmpty() method, it also check the size of arraylist to determine if the list is empty or not. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:15 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Попробуй обернуть список такой оберткой Код: java 1. Но после этого надо мерять производительность. Т.к. если ты будешь сильно часто "долбить" по такому списку из множества потоков то синхронизирующая обёртка может стать узким местом. И посмотри в API примеры как его использовать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:22 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинMolasarпропущено... exception были проблемой. eventList.isEmpty() - потокобезопасная операция? Мне важно определить есть ли в списке элементы или нет. вы в итоге делаете это для того, чтобы по 1000 сообщений вставлять в БД?:) Через пул хикари получается 5к-10к сообщений в секунду. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:26 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинMolasarпропущено... exception были проблемой. eventList.isEmpty() - потокобезопасная операция? Мне важно определить есть ли в списке элементы или нет. вы в итоге делаете это для того, чтобы по 1000 сообщений вставлять в БД?:) В итоге вся эта связка с ActiveMQ получается очень надежной и быстрой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:28 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  MolasarОзверинпропущено... вы в итоге делаете это для того, чтобы по 1000 сообщений вставлять в БД?:) Через пул хикари получается 5к-10к сообщений в секунду. Пул ускоряет только операцию создания нового коннекта. Если ты решаешь задачи где требуется постояное и долго-живущее соединение (обслуживание очереди) то я-бы создал просто отдельный объект Connection навечно. При ошибках - соотв надо предусмотреть логику реконнекта. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:31 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  maytonПопробуй обернуть список такой оберткой Код: java 1. Но после этого надо мерять производительность. Т.к. если ты будешь сильно часто "долбить" по такому списку из множества потоков то синхронизирующая обёртка может стать узким местом. И посмотри в API примеры как его использовать. А Queue быстрее List будет или нет при частом добавлении, чтении? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:36 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  maytonMolasarпропущено... Через пул хикари получается 5к-10к сообщений в секунду. Пул ускоряет только операцию создания нового коннекта. Если ты решаешь задачи где требуется постояное и долго-живущее соединение (обслуживание очереди) то я-бы создал просто отдельный объект Connection навечно. При ошибках - соотв надо предусмотреть логику реконнекта. Пока взял готовое решение - Хикари, чтобы использовать создаваемые им соединения в отдельных потоках. При кол-ве потоков = 2*CPU_cores + 1 получается самый производительный вариант записи в БД. Меньше или больше производительность снижается. Где-то у Oracle это прочел, на практике подтвердилось. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 10:43 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  MolasarmaytonПопробуй обернуть список такой оберткой Код: java 1. Но после этого надо мерять производительность. Т.к. если ты будешь сильно часто "долбить" по такому списку из множества потоков то синхронизирующая обёртка может стать узким местом. И посмотри в API примеры как его использовать. А Queue быстрее List будет или нет при частом добавлении, чтении? Queue будет быстрее только в особых случаях. Когда у тебя в задаче есть ярко-выраженная операция с очередями. Такая как добавить в хвост. И взять с головы . И есть 2 (и более потоков) которые это делают асинхронно и независимо. В остальных случаях Queue может быть хуже чем List. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 11:07 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  Molasar, я так думаю, что самый просто и надежный вариант и при этом приемлемый по скорости - это использовать ArrayBlockingQueue и не париться. Если скорость не устроит - идти дальше. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 11:11 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  maytonMolasarпропущено... А Queue быстрее List будет или нет при частом добавлении, чтении? Queue будет быстрее только в особых случаях. Когда у тебя в задаче есть ярко-выраженная операция с очередями. Такая как добавить в хвост. И взять с головы . И есть 2 (и более потоков) которые это делают асинхронно и независимо. В остальных случаях Queue может быть хуже чем List. В моём случае будет 2 потока: 1-ый добавляет элемент в хвост. 2-ой берет и удаляет элемент с головы. Озверин тоже рекомендовал использовать - ArrayBlockingQueue ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 21.06.2019, 11:12 
 | 
|||
|---|---|---|---|
Запуск потоков в конструкторе класса  | 
|||
| 
 #18+ 
  
    
  ОзверинMolasar, я так думаю, что самый просто и надежный вариант и при этом приемлемый по скорости - это использовать ArrayBlockingQueue и не париться. Если скорость не устроит - идти дальше. Понял. Спасибо ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=59&mobile=1&tid=2121241]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    56ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    58ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 235ms | 
| total: | 391ms | 

    | 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.