【多線程】-線程安全

原因:

   當多個線程同時共享,同一個全局變量或靜態變量。做寫的操作時,可能發生數據衝突問題,也就是線程安全問題。但是做讀操作是不會發生數據衝突問題。

 

解決方案:

方式一:內置鎖Synchronized

Synchronized保證線程原子性,當線程進入方法的時候,自動獲取鎖,一旦鎖被其它線程獲取之後,其它的線程就會等待。

 

方式二:同步方式

1、同步代碼塊

Synchronized(任意全局對象){

需要同步的代碼

}

同步代碼塊需要注意的事項:

     1.鎖對象可以是任意的一個對象;

     2.一個線程在同步代碼塊中sleep了,並不會釋放鎖對象;

     3.如果不存在線程安全問題,千萬不要使用同步代碼塊;

     4.鎖對象必須是多線程共享的一個資源,否則鎖不住。

 

2、同步方法:非靜態同步方法與靜態同步方法

修飾在方法上,非靜態同步方法用的是this證明鎖。

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