我正在制作一个分发任务的程序。我有这样的通信器对象的arraylist:
ArrayList<Workers>
我正在处理一个文件,将它分成固定大小的块并分派给各个工人。我正在使用迭代器将块均匀地传递给工人。通常有比工人更多的块,所以我需要在我的工人周围循环。我该怎么做,我当前的解决方案使用这样的迭代器。
private Worker getNextWorker() {
if (workerIterator == null)
workerIterator = workers.iterator();
if (!workerIterator.hasNext())
workerIterator = workers.iterator();
return workerIterator.next();
}
我同步了方法以及方法修改了arraylist,但这并不安全,因为另一个线程可以进入并修改迭代器调用之间的集合。因此,我同步了整个文件拆分过程,使其成为一个大的原子语句。
1)我错过了什么吗?
2)是否有另一种,也许更好的方法可以围绕功能进行循环。