Вы ожидаете на Thread
- и если большинство объектов не оповещены , объект Thread
уведомляется, когда поток завершается. Он где-то документирован (я ищу его ...), что вы должны not использовать wait
/ notify
на объектах Thread
, поскольку это сделано внутренне.
Это хороший пример того, почему лучше использовать «частный» объект для синхронизации (и ждать / уведомлять) - то, о чем знает только , о котором знает ваш код. Обычно я использую что-то вроде:
private final Object lock = new Object();
(В общем, однако, чище использовать некоторые абстракции более высокого уровня, предоставляемые java.util.concurrent, если вы можете. Как отмечено в комментариях, это также неплохо реализовать Runnable
, а не расширять Thread
самостоятельно.)