我有一个简单的java应用程序,它计算素数直到某个用户给定的数字并打印出这些数字。我在此基础上添加了四个独立的线程,它们迭代 4 个独立的数字范围。一旦所有 4 个线程都完成了迭代,我想打印最终的 ArrayList。
我当前收到 ConcurrentModificationException,因为在启动 4 个线程后,下一行代码是 print 语句,该语句试图打印 ArrayList,该 ArrayList 目前正在被至少一个仍处于 Activity 状态的线程修改.
因此,我希望能够在 4 个线程全部死亡后执行 print 语句。此外,我想在不使用旋转循环的情况下执行此操作。我没有什么特别反对使用旋转循环的地方,只是我想有更好的方法来做到这一点,并且我可能必须为 4 个线程分配更大的优先级,以防止旋转循环耗尽大量的线程。 CPU。
最佳答案
使用 CountDownLatch初始化为4;打印线程等待
锁存器,工作线程在终止之前对锁存器调用倒计时
。
如果四个线程同时修改您的ArrayList
,请确保正确同步它;您可能想使用ConcurrentLinkedQueue相反(或者为每个线程使用不同的ArrayList
)
关于java - 如何在 4 个独立线程完成后安排打印语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16661403/