![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Mr.Doctor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2003 Репутация: нет Всего: нет |
В старой Java у класса Thread был такой замечательный метод как suspend() / resume(). Из соображений безопасности метод упразнили. Теперь стоит задача: разработать механизм, который приостановит поток в том месте где это возможно (безопасно или назовите как хотите) но с подачи другого (основного) потока. Тоесть, я хочу приостановить поток там где хочу, а не там где у него написано while(suspended == true) { wait() }
|
|||
|
||||
DarkDS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Что именно хочешь добиться?
|
|||
|
||||
Mr.Doctor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2003 Репутация: нет Всего: нет |
Хочу, чтобы выполнение потока (Thread) можно было приостановить (suspend) из другого потока. Плюс к этому, поток который надо приостановить должен приостанавливаться не где нипопадя, а заканчивая какую-либо внутреннюю микрооперацию (например итерацию цикла).
|
|||
|
||||
DarkDS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Эта... А много в потоке вообще таких операций? то есть много ли мест, в которых можно его приостановить?
|
|||
|
||||
Mr.Doctor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2003 Репутация: нет Всего: нет |
Ну, скажем от 2 до 3. Я, впринцыпе, решил проблему таким путём:
public class SomeClass extends Thread { } |
|||
|
||||
Mr.Doctor |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.8.2003 Репутация: нет Всего: нет |
Sorry,
Ну, скажем от 2 до 3. Я, впринцыпе, решил проблему таким путём: public class SomeClass extends Thread { boolean suspended; public void suspendMe() { suspended = true; } public synchronized void wakeUpMe() { suspended = false; notify(); } public void myWait() { try { synchronized(this) { while(suspended) { wait(); } } catch (....) { } } } public void run() { .................................... myWait(); ................................. for (...........) { myWait(); ................................ } ...........and so on .................. } } Просто это какое-то горбатое решение. Если есть другие варианты напишите |
|||
|
||||
DarkDS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
По сути только так... Если хочешь чтобы какие то части процесса нельзя было остановить...
При суспенд - он тоже останавливал в любой точке.... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |