Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Разбудить основной Thread из порождённых им. |
Автор: Orange 31.7.2008, 15:21 | ||||
Привет, помогите разобраться. Не получается пробудить основной трэд :
Добавлено через 11 минут и 8 секунд Есть такая мысль, поток не будится потому что notify вызывается на объекте LoadBar... Тогда не пойму, как его вызвать в LoadBar-е на объекте Startruntime? |
Автор: ivg 31.7.2008, 15:48 | ||
|
Автор: Orange 31.7.2008, 17:26 |
Exception in thread "one thread" java.lang.IllegalMonitorStateException at java.lang.Object.notify(Native Method) at model.StartRuntime$LoadBar.run(StartRuntime.java:95) ![]() |
Автор: Dummy 31.7.2008, 18:39 | ||
45-ю строчку измени на
|
Автор: Orange 1.8.2008, 14:15 |
Exception in thread "Basic Thread" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at Startruntime.go(Startruntime.java:38) at Startruntime.<init>(Startruntime.java:17) at ProcessClass.startProcess(ProcessClass.java:17) at BasicThread.prepareProcess(BasicThread.java:21) at BasicThread.run(BasicThread.java:14) |
Автор: Orange 1.8.2008, 14:43 | ||||||||
Вот убрал всё лишнее из кода, оставил только работу трэдов. (Уже все варианты synchronized/notify перебрал - то IllegalMonitorStateException в "Basic Thread", то в "one thread" либо ексепшенов нет, но поток не просыпается. ![]() Где я накосячил? Main
BasicThread
Запуск процессов:
Ожидание завершения запущенного процесса, в котором и выбрасывается эксепшен на notify
Добавлено через 5 минут и 35 секунд Я уже вместо wait/notify ловлю основной поток в цикл while (!isMyWait) { if (isMyWait) { isMyWait = isValue = false; break; } } и после отработки waitFor() делаю isMyWait = true, но мне кажется, что это какое-то дурацкое решение... да и в любом случае хотелось бы разобраться с проблемой. |
Автор: Orange 1.8.2008, 16:38 | ||
Так, всё-таки я эксепшн победил. ![]() Сделал метод go() synchronized (хотя вариант с
не работал.. (так я и не понял почему) и убрал join на треды t1 и t2. (тоже не понятно почему с ними не работало..) Пока тему не буду закрывать, может кто-нибудь откоментирует о вышесказанном. |