1. 程式人生 > >線程安全問題出現 的根本原因和解決方案

線程安全問題出現 的根本原因和解決方案

代碼塊 zed 固定 syn 方法 共享 方案 代碼 靜態

線程安全問題出現的根本原因:
1. 必須要存在兩個或者兩個以上的線程共享著一個資源。
2. 操作共享資源的代碼必須有兩句或者兩句以上。



1. 同步代碼塊
synchronized(鎖){
需要被同步的代碼
}

2. 同步函數。
修飾符 synchronized 返回值類型 函數名(形參列表..){

}
註意:
1. 同步代碼塊的鎖可以是任意的對象。 同步函數的鎖是固定 的,非靜態函數的鎖對象是this對象。 靜態函數的鎖對象是class對象。

2. 鎖對象必須是多線程共享的對象,否則鎖不住。
3. 在同步代碼塊或者是同步函數中調用sleep方法是不會釋放鎖對象的,如果是調用了wait方法是會釋放鎖對象的。




線程安全問題出現 的根本原因和解決方案