java多线程5(知识点)

1,Vector,线程同步,原子操作。组合操作不一定原子性。


2,ConcurrentLinkedQueue,并发容器,原子操作。


3,没有并发时:

HashMap可以加锁

TreeMap排好顺序

并发时:

HashTable整个容器上锁,效率低

ConcurrentHashMap,高并发不排序

ConcurrentSkipListMap高并发并且排序,跳表排序


4,CopyOnWriteArrayList去的效率高,写的效率低,不用加锁,是产生一个新容器,改变指向。


5,BlockQueue,阻塞式队列,put,get会阻塞,类似生产者和消费中中,满了就等待,空了就等待。

LinkedBlockQueue无界队列

ArrayBlockQueue有界队列

put阻塞,add报错,offer返回false,offer带一段时间,这段时间内不成功,就返回false。

6,DelayQueue无界队列

可以做定时执行任务。


7,TransferQueue

转移队列,可以直接给消费者,不放入队列,效率更高。

strs.transfer();但是如果没有消费者,找不到消费者,会阻塞。

strs.put();不会阻塞。

netty里transfer()用的比较多。

8,SynchronousQueue特殊的TransferQueue

这个队列容量为0,没有消费者,add()报错,put()不报错,会阻塞。

S
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。