|
|
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
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), которую вызывает поток иметь возможность этот поток на время приостановить. Как это сделать и почему ошибка возникает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 13:50 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tash, Вы перепутали Thread.sleep() и Object.wait(). Первый приостанавливает поток на время, а второй блокирует поток на мониторе объекта, как вариант, с таймаутом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 13:54 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
thread.run() - запускает выполнение метода в текущем потоке. Для выполнения в отдельном потоке надо thread.start(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 14:18 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ruzja, Если запустить как thread.start() - выходит Exception in thread "Thread-2" java.lang.IllegalMonitorStateException at java.lang.Object.wait(Native Method) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 14:44 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
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); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 14:47 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tashА как тогда из процедуры получить ссылку на поток её вызвавший ? Так ? } Thread.currentThread(). Тут хорошо написано http://skipy.ru/technics/synchronization.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 14:57 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tash, "процедуры" в Java называются "методами". Потоки не "вызывают" методы. Методы вызывают другие методы. А поток, это такой контекст выполнения методов и кода вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 14:59 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tash, есть догадка, что тебе потоки не нужны и можно без них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 15:29 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ruzja, Так с Thread.currentThread - ошибка выдаётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:04 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tashruzja, Так с Thread.currentThread - ошибка выдаётся. Так ошибка на wait, а не на currentThread. Вы специально мой первый ответ игнорируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:05 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tash, Возьмете любой внятный пример и разбирайтесь с ним https://www.tutorialspoint.com/java/lang/thread_sleep_millis.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:07 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Так как из метода который вызывается в потоке этот поток приостановить ? 19947410 так ? или это не правильно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:07 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Так я не знаю как получить в методе ссылку на поток, чтобы вызвать у него метод sleep. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:09 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tashТак как из метода который вызывается в потоке этот поток приостановить ? 19947410 так ? или это не правильно ? Как всё сложно-то. Код: java 1. Вы бы сначала с методами, классами и объектами разобрались, а потом уже к потокам переходили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:11 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
Blazkowiczali_tashТак как из метода который вызывается в потоке этот поток приостановить ? 19947410 так ? или это не правильно ? Как всё сложно-то. Код: java 1. Вы бы сначала с методами, классами и объектами разобрались, а потом уже к потокам переходили. Да, сработало. Спасибо. А метод wait зачем тогда ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:15 |
|
||
|
Как приостановить на время подпоток - IllegalMonitorStateException
|
|||
|---|---|---|---|
|
#18+
ali_tashА метод wait зачем тогда ? Первая же ссылка из гугла http://javadevblog.com/primer-ispol-zovaniya-wait-notify-i-notifyall-v-java.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2016, 16:18 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39356855&tid=2123447]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 403ms |

| 0 / 0 |
