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