![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Всем добрый день.
Есть следующая задача: В процессе работы приложения дергается некий метод у некоего класса:
Данный метод может выполнятся сколь угодно долго. Мне необходимо, чтобы через некий таймаут приложение продолжило свою работу, даже если данный метод еще выполняется. Т.е. грубо говоря задача вызвать этот метод асинхронно с неким таймаутом. Сразу скажу, что вариант с дополнительным тредом уже есть. Это первое что пришло в голову. Также есть еще довольно тяжеловесное решение(связано с jms). Хотел узнать, если ли еще варианты. А самое главное, - есть ли возможность указать таймаут на выполнение метода в EJB. Сам это дело гуглил, но к сожалению нашел только таймаут на транзакцию для EJB, что не совсем то... |
|||
|
||||
gEndelf |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 7.7.2005 Где: the world Репутация: 1 Всего: 3 |
||||
|
||||
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Это как вариант, но он по большому счету ничем не отличается от использования доп треда, т.к. внутри все равно поднимется дом тред, который будет выполнять некую Job.
Конечно, плюс данного варианта в том что это уже более менее протестенная библиотека и с ней проблем быть не должно, я имею в виду кварц. |
|||
|
||||
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Да, в общем вывод в результате поисков/размышлений я сделал такие:
1. Единственный корректный способ реализации всего ентого, это использование JMS 2. Реализовывать енто с помощью доп потока в принципе возможно, только при этом необходимо писать(использовать) некий фреймворк, который бы мэнеджил эти доп треды и не давал бы расти их колличеству и чтоб это кол-во доп тредов могло быть сконфигурено, при этом по идее надо уменьшить в конфигурации j2ee сервера макс количество тредов как минимум на кол-во доп. тредов. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
для ваших целей достаточно применения new Thread , wait (long timeout) и notify.
Однако чтобы вручную не программировать контроль количества создаваемых потоков проще воспользоваться пакетом java.util.concurrent - там разные варианты Executors , в том числе пулы с фиксированным количеством потоков. Чтобы вручную не программировать wait - notify можно применить submit, который возвращает java.util.concurrent.Future. У него есть метод public V get(long timeout, TimeUnit unit) , который блокируется и возвращает результат только после выполнения задачи или исключение по истечению таймаута. http://java.sun.com/docs/books/tutorial/es...cy/exinter.html Это сообщение отредактировал(а) COVD - 19.8.2008, 21:18 |
|||
|
||||
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Вот уж этого точно не достаточно, - этот подход уронит сервер на первой же пиковой нагрузке. А вот это хороший вариант, только в этом случае приедтся настроить оптимальное макс кол-во тредов в пуле и при этом уменьшить макс кол-во тредов контейнера. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |