Java中存在许多队列实现,如LinkedList、BlockingQueues。它们都是线程安全的吗?如果您的回答是否定的,哪些实现支持并发访问,哪些提供最佳性能?
注意:我使用的是 JDK 1.6。
Java中存在许多队列实现,如LinkedList、BlockingQueues。它们都是线程安全的吗?如果您的回答是否定的,哪些实现支持并发访问,哪些提供最佳性能?
注意:我使用的是 JDK 1.6。
大多数标准集合都不是线程安全的。您在阅读 API 文档时会发现此信息。
例如LinkedList的文档:
如果多个线程同时访问一个链表,并且至少有一个线程在结构上修改了链表,则必须对外同步
对于从多个线程访问的集合,您应该查看java.util.concurrent包
不LinkedList
,例如不是线程安全的。
包中的那些java.util.concurrent
是线程安全的。
最佳性能取决于您对它们的处理方式。而且您不会根据其性能选择实现,而是根据队列的行为方式以及您需要对队列执行的操作。例如, aSynchronousQueue
的行为与 aLinkedList
或 an完全不同ArrayBlockingQueue
。