| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > запаузить ветвь потоков |
| Автор: leniviy 28.3.2011, 19:11 |
| Привет. Есть junit для некоего клиента. В методе setUp() стартует embedded server. В нескольких тестах надо протестировать таймауты. Сервер многопоточный, исходников нет. Я хочу запаузить все треды сервера. Для этого я планирую создать родительский тред и стартануть из него сервер, а в нужный момент перечислить все потомки этого треда и остановить их. Как это сделать? Дочерние потоки ведь не обязательно наследуют ThreadGroup или ClassLoader? |
| Автор: AntonSaburov 29.3.2011, 15:13 |
| Может проще не выходить из setUp пока сервер не стартует. А признаком, что стартовал может служить ответ сервера на какой-то запрос к нему. Пока ответов нет - значит ждем. |
| Автор: leniviy 29.3.2011, 15:33 | ||||
| Сорри, но ответ невпопад. Я решил стартовать сервер в отдельном процессе, тогда можно суспендить все треды кроме main. Вероятность дедлока будет меньше. Появилась проблема с наследованием classpath. Хотел использовать SurefireBooter из maven, но нет времени разбираться. Так-что по-простому:
Вероятная проблема: 2 инстанса log4j пишут в 1 файл а так я останавливаю потоки
|
| Автор: AntonSaburov 29.3.2011, 16:31 |
Если честно - не понял я тогда вопрос. Если сервер embedded, то это обычно в той же JVM. Или тогда вопрос задан без точного описания проблемы. Если сервер - внешний процесс, то тем более не проще ли задать вопрос серверу и получить ответ, что он еще не готов (или готов). И решать вопрос о запуске тестов. Такой огород городить с запуском/остановкой тредов - как-то сложно выглядит. |
| Автор: leniviy 29.3.2011, 18:51 |
| > И решать вопрос о запуске тестов. Проблема не в этом. Мне надо, чтобы сервер как бы "завис" во время теста. |