![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
xbarmaglot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Есть объект, вызовы которого необходимо производить в одном потоке.
Но сами вызовы (start/stop) я могу сделать лишь из разных потоков. В голову пришло лишь запустить данный объект в отдельном потоке. В начале работы вызвать start, а при внешнем interrupt в блоке finally вызывать stop. Но при этом после запуска потока необходимо его усыпить по вызова interuupt. Sleep(0xffffffff) как-то криво. Как еще можно усыпить поток до его прерывания работы ? |
|||
|
||||
Viroman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Самый лучший вариант, действительно запустить в другом потоке
и использовать синхронизированные блоки с wait/notify пример
Думаю, принцип работы Вам будет понятен из этого нехитрого примера.. Будить можно будет из любого потока, а вот в wait Вам надо будет его уже из его собственного потока вызывать. и ещё хотелось добавить, по сути ява не даёт технической возможности именно усыпить поток из другого потока, или deprecated уже давно, в общем руки прочь, на память уже не помню..Но любое обращение к потокам даёт ссылку на актуальный поток, который на тот момент обрабатывается, следовательно, усыплять поток надо из себя же. Для этого обычно ставят в разных местах кода отпросы, типа если здесь значение true на сон, то усыпить.. Окончательная реализация будет зависеть от кода, который у Вас.. Это сообщение отредактировал(а) Viroman - 27.2.2013, 17:02 |
|||
|
||||
xbarmaglot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
Viroman, а что если просто wait() в потоке, а прервать его через interrupt ?
Тогда не нужен ни флаг ни синхронизация... |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Wait нельзя вызывать вне synchronized-блока, получите IllegalMonitorStateException -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
xbarmaglot |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |