线程不安全的:
ArrayList
LinkedList
线程安全的:
如果不需要阻塞队列,优先选择ConcurrentLinkedQueue;
如果需要阻塞队列,队列大小固定优先选择 ArrayBlockingQueue,队列大小不固定优先选择LinkedBlockingQueue;
如果需要对队列进行排序,选择 PriorityBlockingQueue;如果需要一个快速交换的队列,选择SynchronousQueue;
如果需要对队列中的元素进行延时操 作,则选择DelayQueue。
需求:假设有两个线程,先进先出原则,一个线程写,一个线程读,并删除最先的一个
方法:
1. LinkedList+synchronized
2.ConcurrentLinkedQueue
3.LinkedBlockingQueue
测试:
方法1和3差不多,LinkedBlockingQueue其实就是 LinkedList+synchronized
ConcurrentLinkedQueue在使用时,当两个线程都100%运算时,大部份资源都用在了写入上