powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как приостановить на время подпоток - IllegalMonitorStateException
16 сообщений из 16, страница 1 из 1
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356818
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
public boolean runIt(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (!isReady()) {
processData();
}
}
});
thread.run();
return false;
}

public void processData(){
//
Thread.currentThread().wait(5000); // Здесь выдаётся ошибка IllegalMonitorStateException
}

Причём ошибка Exception in thread "main" java.lang.IllegalMonitorStateException - Т,е. ругается на главный поток, а не на этот подпоток thread - хотя процедура вызывается потоком thread а не main.
Нужно из процедуры(processData), которую вызывает поток иметь возможность этот поток на время приостановить.
Как это сделать и почему ошибка возникает ?
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356820
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tash,

Вы перепутали Thread.sleep() и Object.wait(). Первый приостанавливает поток на время, а второй блокирует поток на мониторе объекта, как вариант, с таймаутом.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356855
ruzja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thread.run() - запускает выполнение метода в текущем потоке.
Для выполнения в отдельном потоке надо thread.start();
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356889
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ruzja,

Если запустить как thread.start() - выходит

Exception in thread "Thread-2" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method)
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356896
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

А как тогда из процедуры получить ссылку на поток её вызвавший ?
Так ?

class A {

private Thread thread = "";

public boolean runIt(){
thread = new Thread(new Runnable() {
@Override
public void run() {
while (!isReady()) {
processData();
}
}
});
thread.run();
return false;
}

public void processData(){
//
//Thread.currentThread().wait(5000); // Здесь выдаётся ошибка IllegalMonitorStateException
thread.sleep(5000);
}

}
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356912
ruzja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ali_tashА как тогда из процедуры получить ссылку на поток её вызвавший ?
Так ?
}
Thread.currentThread().

Тут хорошо написано http://skipy.ru/technics/synchronization.html
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356917
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tash,

"процедуры" в Java называются "методами".
Потоки не "вызывают" методы. Методы вызывают другие методы.
А поток, это такой контекст выполнения методов и кода вообще.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39356959
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tash,
есть догадка, что тебе потоки не нужны и можно без них.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357025
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ruzja,

Так с Thread.currentThread - ошибка выдаётся.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357030
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tashruzja,

Так с Thread.currentThread - ошибка выдаётся.
Так ошибка на wait, а не на currentThread. Вы специально мой первый ответ игнорируете?
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357032
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tash,

Возьмете любой внятный пример и разбирайтесь с ним
https://www.tutorialspoint.com/java/lang/thread_sleep_millis.htm
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357034
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Так как из метода который вызывается в потоке этот поток приостановить ?
19947410 так ? или это не правильно ?
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357040
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Так я не знаю как получить в методе ссылку на поток, чтобы вызвать у него метод sleep.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357043
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tashТак как из метода который вызывается в потоке этот поток приостановить ?
19947410 так ? или это не правильно ?

Как всё сложно-то.
Код: java
1.
Thread.currentThread().sleep(1000)


Вы бы сначала с методами, классами и объектами разобрались, а потом уже к потокам переходили.
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357053
ali_tash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczali_tashТак как из метода который вызывается в потоке этот поток приостановить ?
19947410 так ? или это не правильно ?

Как всё сложно-то.
Код: java
1.
Thread.currentThread().sleep(1000)


Вы бы сначала с методами, классами и объектами разобрались, а потом уже к потокам переходили.

Да, сработало. Спасибо.

А метод wait зачем тогда ?
...
Рейтинг: 0 / 0
Как приостановить на время подпоток - IllegalMonitorStateException
    #39357062
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ali_tashА метод wait зачем тогда ?
Первая же ссылка из гугла
http://javadevblog.com/primer-ispol-zovaniya-wait-notify-i-notifyall-v-java.html
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как приостановить на время подпоток - IllegalMonitorStateException
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]