廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
生活随笔
收集整理的這篇文章主要介紹了
廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Concurrent
用ReentrantLock+Condition實(shí)現(xiàn)Blocking Queue。
Blocking Queue:當(dāng)一個(gè)線程調(diào)用getTask()時(shí),該方法內(nèi)部可能讓給線程進(jìn)入等待狀態(tài),直到條件滿足。線程喚醒以后,getTask()才會(huì)返回,而java.util.concurrent提供了線程安全的Blocking集合,如ArrayBlockingQueue。
java.util.Collections工具類還提供了舊的線程安全集合轉(zhuǎn)換器:
如把一個(gè)HashMap轉(zhuǎn)化為線程安全的HashMap:
實(shí)際使用了一個(gè)包裝類,包裝了非線程安全的Map,然后對(duì)所有的方法都用synchronized加鎖,這樣獲得線程安全的集合,性能比Concurrent低很多,不推薦使用。
總結(jié):
使用java.util.concurrent提供的Blocking集合可以簡(jiǎn)化多線程編程
- 多線程同時(shí)訪問Blocking集合是安全的
- 盡量使用JDK提供的concurrent集合,避免自己編寫同步代碼
轉(zhuǎn)載于:https://www.cnblogs.com/csj2018/p/11016289.html
總結(jié)
以上是生活随笔為你收集整理的廖雪峰Java11多线程编程-3高级concurrent包-4Concurrent集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]数据库性能优化(老Key)
- 下一篇: 将英文man替换为中文man最简单的方法