|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2011, 21:09 | #1 |
Регистрация: 11.02.2011
Сообщений: 5
|
wait, notifyAll
Проблема решена.
Собственно, вопрос в следующем: почему данный код генерирует java.lang.IllegalMonitorStateExcept ion? Ведь когда вызывается метод count.notifyAll(), текущий поток является владельцем монитора count, и этого происходить не должно. Код:
Последний раз редактировалось --Serega--; 23.11.2011 в 15:59. |
20.12.2011, 10:12 | #2 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
потому что вы используете переменную в качестве монитора, и изменяете ее. Т.к. Integer это immutable sequence, то код: count++ неизменно приведет к тому, что ссылка будет ссылаться на другой объект, а следовательно count.notifyAll() бросит исключение. Правильно будет завести отдельную (да еще и константную) ссылку на монитор.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибка lock conflict on no wait transaction | пауэрлифтинг | БД в Delphi | 1 | 28.05.2010 00:19 |