Java中的所有队列都是线程安全的吗?

ovu*_*tin 3 java queue concurrency thread-safety

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

注意:我正在使用JDK 1.6.

mic*_*cha 9

大多数标准集合都不是线程安全的.您在阅读API文档时可以找到此信息.

例如LinkedList的文档:

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

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


JB *_*zet 7

LinkedList例如是不是线程安全的.

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

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