1. 程式人生 > >多執行緒知識(看如下連結足矣)

多執行緒知識(看如下連結足矣)

1.Lock和synchronized的區別和使用
https://www.cnblogs.com/baizhanshi/p/6419268.html
總結來說,Lock和synchronized有以下幾點不同:

1)Lock是一個介面,而synchronized是Java中的關鍵字,synchronized是內建的語言實現;

2)synchronized在發生異常時,會自動釋放執行緒佔有的鎖,因此不會導致死鎖現象發生;而Lock在發生異常時,如果沒有主動通過unLock()去釋放鎖,則很可能造成死鎖現象,因此使用Lock時需要在finally塊中釋放鎖;

3)Lock可以讓等待鎖的執行緒響應中斷,而synchronized卻不行,使用synchronized時,等待的執行緒會一直等待下去,不能夠響應中斷;

4)通過Lock可以知道有沒有成功獲取鎖,而synchronized卻無法辦到。

5)Lock可以提高多個執行緒進行讀操作的效率。

在效能上來說,如果競爭資源不激烈,兩者的效能是差不多的,而當競爭資源非常激烈時(即有大量執行緒同時競爭),此時Lock的效能要遠遠優於synchronized。所以說,在具體使用時要根據適當情況選擇。

執行緒池的原理及實現
https://blog.csdn.net/qq_31753145/article/details/50899119

java自帶執行緒池和佇列詳細講解
https://www.oschina.net/question/565065_86540

Java-執行緒池專題 (美團面試題)

https://blog.csdn.net/fct2001140269/article/details/84933368

JAVA執行緒池原理詳解一
https://www.cnblogs.com/dongguacai/p/6030187.html


Java中的鎖分類
https://www.cnblogs.com/qifengshi/p/6831055.html

[Java多執行緒 五]—JAVA鎖有哪些種類
https://blog.csdn.net/nalanmingdian/article/details/77800355