Java 如何等待CopyOnWriteArrayList为空?

Java 如何等待CopyOnWriteArrayList为空?,java,concurrency,Java,Concurrency,我有一个CopyOnWriteArrayList用于3个线程: 第一个线程填充列表 第二个线程从列表中删除对象 当第一个线程被中断时,第三个线程被触发,因此不再向列表中添加更多的对象,但仍然在第二个线程中删除 我希望此线程等待此列表为空。我能做什么 谢谢 最简单的方法是使用一个标志变量。while(!list.isEmpty()){Thread.sleep(100);}@diginoise我不想使用sleep,我更喜欢。。。“高效”方式(等待/通知、倒计时锁存等)线程2:\\使用整个列表;已同步

我有一个
CopyOnWriteArrayList
用于3个线程:

第一个线程填充列表

第二个线程从列表中删除对象

当第一个线程被中断时,第三个线程被触发,因此不再向列表中添加更多的对象,但仍然在第二个线程中删除

我希望此线程等待此列表为空。我能做什么


谢谢

最简单的方法是使用一个标志变量。
while(!list.isEmpty()){Thread.sleep(100);}
@diginoise我不想使用sleep,我更喜欢。。。“高效”方式(等待/通知、倒计时锁存等)线程2:
\\使用整个列表;已同步(列表){list.notifyAll();}
,线程3:
synchronized(列表){while(!list.isEmpty()){wait();}}
当T1退出时,它可以在T2中设置标志。当T2完成所有移除后,它将检查标志并执行T3的工作。不需要T3。