문제

In Java, I need an object which is an ArrayList of 60 LinkedBlockingQueues. The ArrayList will .add() 60 LinkedBlockingQueues in the beginning of the program, while still single threaded. Then one thread will .add() to the LinkedBlockingQueues while another thread will .poll(). Is there any need to explicitly synchronize this object?

도움이 되었습니까?

해결책

Nope, if the list isn't modified after initialization then you don't need to synchronize it. I recommend you use an UnmodifiableList instead of an ArrayList - you'll get a runtime exception if anybody tries to modify the list after it's initialized, which is preferable to having a race condition.

다른 팁

Is there any need to explicitly synchronize this object?

If you fork the threads after you finish building the List then you are fine. However, I'd use an array instead of a Collection if it is truly immutable. You can just do:

BlockingQueue[] blockingQueueArray =
   blockingQueueList.toArray(new BlockingQueue[blockingQueueList.size()]);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top