在Java中,我需要一个ArrayList
为60 LinkedBlockingQueue
的对象。程序开头的ArrayList
将.add()
60 LinkedBlockingQueue
,同时仍为单线程。然后一个线程将.add()
传递给LinkedBlockingQueue
,而另一个线程将.poll()
。是否需要显式同步此对象?
答案 0 :(得分:4)
不,如果在初始化后没有修改列表,那么您不需要同步它。我建议您使用UnmodifiableList而不是ArrayList - 如果有人在初始化后尝试修改列表,您将获得运行时异常,这比竞争条件更好。
答案 1 :(得分:0)
是否需要显式同步此对象?
如果你在后分叉你完成了List
的构建,那么你很好。但是,如果它真的是不可变的,我会使用数组而不是Collection。你可以这样做:
BlockingQueue[] blockingQueueArray =
blockingQueueList.toArray(new BlockingQueue[blockingQueueList.size()]);