4

Java中存在许多队列实现,如LinkedList、BlockingQueues。它们都是线程安全的吗?如果您的回答是否定的,哪些实现支持并发访问,哪些提供最佳性能?

注意:我使用的是 JDK 1.6。

4

2 回答 2

9

大多数标准集合都不是线程安全的。您在阅读 API 文档时会发现此信息。

例如LinkedList的文档:

如果多个线程同时访问一个链表,并且至少有一个线程在结构上修改了链表,则必须对外同步

对于从多个线程访问的集合,您应该查看java.util.concurrent

于 2012-12-23T15:46:40.010 回答
7

LinkedList,例如不是线程安全的。

包中的那些java.util.concurrent是线程安全的。

最佳性能取决于您对它们的处理方式。而且您不会根据其性能选择实现,而是根据队列的行为方式以及您需要对队列执行的操作。例如, aSynchronousQueue的行为与 aLinkedList或 an完全不同ArrayBlockingQueue

于 2012-12-23T15:46:27.190 回答