總結1:Java併發編程

參考書籍《Java併發編程的藝術》

一、併發編程的基礎

1、多線程上下文切換

概念:https://www.cnblogs.com/xrq730/p/5186609.html

2、如何減少上下文切換

方式: https://www.jianshu.com/p/1dd95d9bc8c5

a、無鎖編程

b、Cas算法:

c、使用最少線程

d、使用協程:單線程執行多個任務的方式,減少線程切換

3、死鎖產生的條件和解決方式:

條件: https://blog.csdn.net/hd12370/article/details/82814348

http://c.biancheng.net/view/1236.html

解決方式:

http://c.biancheng.net/view/2620.html

https://blog.csdn.net/ysl1242157902/article/details/52904883

4、線程間的通信方式

https://juejin.im/post/5d595558e51d4561ac7bccc4

https://www.cnblogs.com/lgyxrk/p/10404839.html

5、Java的各種鎖

https://www.cnblogs.com/jyroy/p/11365935.html

6、線程間的狀態轉換

 

二、多線程關鍵字

1、volatile的實現原理

CPU原理

http://ifeve.com/volatile/

內存語義原理

https://baijiahao.baidu.com/s?id=1655055831382625926&wfr=spider&for=pc

volatile不能確保原子性的原因:

https://www.zhihu.com/question/329746124

https://fireinrain.com/2020/02/01/volatile%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E8%83%BD%E4%BF%9D%E8%AF%81%E5%8E%9F%E5%AD%90%E6%80%A7/

2、synchronized的實現原理

實現原理:

https://www.jianshu.com/p/e62fa839aa41

鎖升級:

https://blog.csdn.net/tongdanping/article/details/79647337

https://blog.csdn.net/baidu_38083619/article/details/82527461

https://juejin.im/post/5c936018f265da60ec281bcb

3、如何保證原子性(CAS和鎖)

https://www.jianshu.com/p/435dc89816cd

 

三、多線程java內存模型

1、java指令重排序

https://blog.csdn.net/yjp198713/article/details/78839698

https://tech.meituan.com/2014/09/23/java-memory-reordering.html (美團技術)

 

2、重排序對多線程的影響

https://www.jianshu.com/p/586e44045453

3、as-if-serial語義

https://blog.csdn.net/Lzz0614/article/details/89975284

4、happen-before的含義和原則

https://www.jianshu.com/p/1508eedba54d/

https://www.cnblogs.com/fanyi0922/p/11486580.html

5、volatile的內存語義

https://www.cnblogs.com/yuanfy008/p/9335168.html

6、final的內存語義

https://www.cnblogs.com/senlinyang/p/7875468.html

7、鎖的內存語義

https://www.cnblogs.com/yuanfy008/p/9346925.html

 

四、併發包底層依賴原理

1、AQS(AbstractQueuedSynchronizer) 結合源碼

https://www.jianshu.com/p/cc308d82cc71

共享鎖

https://www.jianshu.com/p/1161d33fc1d0

2、CAS 以及相關問題

https://juejin.im/post/5a73cbbff265da4e807783f5

ABA問題的處理 (AtomicStampedReference)

https://www.jianshu.com/p/8b227a8adbc1

AtomicStampedReference的原理

https://blog.csdn.net/lizc_lizc/article/details/102989288

3、Unsafe的實現原理

https://www.jianshu.com/p/db8dce09232d

4、ReentrantLock原理

https://www.cnblogs.com/sunshine-ground-poems/p/10340147.html

https://blog.csdn.net/qq_20597727/article/details/86263237

 

五、原子類

1、基本數據類型

2、原子更新數組

3、原子更新引用類型

4、原子更新字段

 

六、併發工具類

1、CountdownLatch的作用和工作原理 (直接基於AQS實現)

https://cloud.tencent.com/developer/article/1038486

2、CycileBarrier的作用和工作原理 (基於ReentrantLock+Condition實現)

https://www.cnblogs.com/200911/p/6060195.html

3、Semaphore信號量的作用和工作原理 (直接基於AQS實現)

https://www.cnblogs.com/sunshine-ground-poems/p/10398475.html

4、Exchange

 

七、線程池工作原理

1、線程池工作原理(組成參數)

https://www.cnblogs.com/captainad/p/10943091.html

2、線程池源碼分析

https://blog.csdn.net/mayongzhan_csdn/article/details/80790966

https://blog.csdn.net/programmer_at/article/details/79799267

 

八、java併發編程實戰

1、生產者與消費者的實現

https://juejin.im/entry/596343686fb9a06bbd6f888c

 

2、創建多少線程合適

https://mp.weixin.qq.com/s/TTxKi2_x2vyH6EiqgSLoIg

 

3、面試題

https://thinkwon.blog.csdn.net/article/details/104863992

方誌朋

https://mp.weixin.qq.com/s/VQFnvA345cRqOzKPpXR21A

4、高併發限流

https://www.cnblogs.com/itsoku123/p/11383684.html

https://zhuanlan.zhihu.com/p/99348889

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章