在 Java 中,我需要一个ArrayList
60LinkedBlockingQueue
秒的对象。将60秒ArrayList
在程序的开头,同时仍然是单线程的。然后一个线程将到s 而另一个线程将。是否需要显式同步此对象?.add()
LinkedBlockingQueue
.add()
LinkedBlockingQueue
.poll()
问问题
196 次
2 回答
4
不,如果列表在初始化后没有被修改,那么你不需要同步它。我建议您使用UnmodifiableList而不是 ArrayList - 如果有人在初始化后尝试修改列表,您将获得运行时异常,这比竞争条件更可取。
于 2013-04-17T21:19:58.180 回答
0
是否需要显式同步此对象?
如果您在完成构建后List
分叉线程,那么您就可以了。但是,如果它是真正不可变的,我会使用数组而不是 Collection。你可以这样做:
BlockingQueue[] blockingQueueArray =
blockingQueueList.toArray(new BlockingQueue[blockingQueueList.size()]);
于 2013-04-17T21:35:18.310 回答