Java學習筆記:線程,并發(fā),線程同步,同步鎖,死鎖【詩書畫唱】
并發(fā)介紹:
同一個對象多個線程同時進行操作,就會出現(xiàn)線程不安全,并發(fā)出現(xiàn)的三個要素
1.同一個對象
2.多個用戶
3.同時操作
當同一個對象被多個用戶同時操作時,就會出現(xiàn)線程并發(fā)問題,如何解決?
可以使用線程同步
線程同步:
線程同步是java虛擬機處理并發(fā)的一種機制,多個需要訪問同一個對象的線程會被放入到線程池里,形成線程隊列,有當前訪問該對象的線程形成一把鎖,當該線程訪問完對象后,才會解除鎖,然后才可以被其他線程訪問
同步鎖使用的兩種情況
:
1.同步鎖可以修飾塊,將一塊代碼修飾為同步的
2.同步鎖可以修飾方法,將整個方法修飾為同步的
鎖的注意事項
:
1.鎖的位置,如果太大會造成資源浪費,如果太小會造成鎖不住內(nèi)容
2.鎖,方法鎖默認使用鎖的內(nèi)容是this,要根據(jù)當時的情況去選擇鎖,不能夠使用進行變化的值,要看同步塊改變的內(nèi)容去選擇正確的鎖
死鎖:
某一個同步塊中同J時擁有“兩個或者以上對象的鎖”,就可能發(fā)生“死鎖的問題”
如何避免死鎖:
進行鎖內(nèi)容的時候不要在一個同步鎖中添加其他鎖
標簽: