Домой Учебники по Java и J2EE Как исправить исключение в потоке main — java.lang.IllegalMonitorStateException Ошибка в Thread.wait ()

Как исправить исключение в потоке main — java.lang.IllegalMonitorStateException Ошибка в Thread.wait ()

547
0

При запуске программы Java вы получаете эту ошибку?

Исключение Java

1
2
3
Исключение в нить главный Java. яз. IllegalMonitorStateException
в Яве . яз. Объект . ждать (Родной Метод )
в crunchify. ком . учебник . CrunchifyJavaThreadPriority . main ( CrunchifyJavaThreadPriority . java : 50 )

Сегодня, работая над Java-программой, я стал выше java.lang. IllegalMonitorStateException Исключение во время выполнения . Во время компиляции не было никаких ошибок. После завершения полной Java-программы по созданию потоков, когда я запускал код, неожиданно появилась ошибка.

Что ж, так как трассировка стека исключений четко показала номер строки, откуда появилось исключение, я не смог сразу найти решение. Исключение исходило снизу wait() заявление.

1
2
3
4
5
пытаться {
crunchChildThread . подождите ( 10000 ) ;    < ==== отсюда
} ловить ( InterruptedException е ) {
эл . printStackTrace ( ) ;
}

Это оказался отсутствующий синхронизированный блок. Чтобы Thread.wait () работал, блок кода должен быть в синхронизированном блоке . Это происходит, когда вы пытаетесь получить доступ без удержания блокировки потока / объекта .

ЧИТАТЬ ТАКЖЕ:  Memcached Java Client Tutorial с использованием библиотеки net.spy.spymemcached

Чтобы это исправить, используйте приведенный ниже код. Убедитесь, что вы используете synchronized keyword для метода.

1
2
3
4
5
6
7
8
9
10
11
частный синхронизированная пустота generateThreadWait ( ) {
окончательный DateTimeFormatter dtf знак равно DateTimeFormatter . ofPattern ( гггг / мм / дд чч: мм: сс ) ;
пытаться {
println ( «Внутри синхронизированной записи блока …» + DTF. формат ( LocalDateTime . now ( ) ) ) ;
это. подождите ( 10000 ) ;
println ( «Внутри синхронизированного блока выхода …» + DTF. формат ( LocalDateTime . now ( ) ) ) ;
} ловить ( InterruptedException е ) {
эл . printStackTrace ( ) ;
}
}

Теперь снова запустите вашу программу, и вы не должны видеть IllegalMonitorStateException исключение больше.

Как исправить исключение в потоке main — java.lang.IllegalMonitorStateException Ошибка в Thread.wait ()

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь