вы можете использовать встроенную функцию list ():
newlist=list(oldlist)
Я думаю, этот код вам поможет.
Вы ожидаете на Thread
- и если большинство объектов не оповещены , объект Thread
уведомляется, когда поток завершается. Он где-то документирован (я ищу его ...), что вы должны not использовать wait
/ notify
на объектах Thread
, поскольку это сделано внутренне.
Это хороший пример того, почему лучше использовать «частный» объект для синхронизации (и ждать / уведомлять) - то, о чем знает только , о котором знает ваш код. Обычно я использую что-то вроде:
private final Object lock = new Object();
(В общем, однако, чище использовать некоторые абстракции более высокого уровня, предоставляемые java.util.concurrent, если вы можете. Как отмечено в комментариях, это также неплохо реализовать Runnable
, а не расширять Thread
самостоятельно.)
JavaDoc для wait
дает ответ: возможны побочные пробуждения. Это означает, что JVM имеет право закончить вызов wait
всякий раз, когда захочет.
Документация даже дает вам решение, если вы этого не хотите (что, вероятно, всегда так): поставьте вызовите wait
в цикле и проверьте, стало ли ожиданное условие после каждого пробуждения.
InterruptedException
вызывается только тогда, когда поток прерывается.
– Philipp Wendler
27 January 2012 в 10:19
Thread
в частности; он будет i> уведомляться, когда поток завершается. Это не паразитный в обычном смысле.
– Jon Skeet
27 January 2012 в 10:28