JAVA 集合多线程下的使用及测试

线程不安全的:

ArrayList

LinkedList


线程安全的:


如果不需要阻塞队列,优先选择ConcurrentLinkedQueue;

如果需要阻塞队列,队列大小固定优先选择 ArrayBlockingQueue,队列大小不固定优先选择LinkedBlockingQueue;

如果需要对队列进行排序,选择 PriorityBlockingQueue;
如果需要一个快速交换的队列,选择SynchronousQueue;

如果需要对队列中的元素进行延时操 作,则选择DelayQueue。


需求:假设有两个线程,先进先出原则,一个线程写,一个线程读,并删除最先的一个

方法:

1. LinkedList+synchronized

2.ConcurrentLinkedQueue

3.LinkedBlockingQueue

测试:

方法1和3差不多,LinkedBlockingQueue其实就是 LinkedList+synchronized

ConcurrentLinkedQueue在使用时,当两个线程都100%运算时,大部份资源都用在了写入上


你可能感兴趣的:(JAVA)