Java synchronized (1)
阿新 • • 發佈:2017-10-26
col 實例對象 syn 線程 monit 就會 註意 註意點 tor
1. 解決問題
多線程並發問題。
2. 原理
3. 註意點
a. synchronized(class、this、object)區別?
synchronized(class)很特別,它會讓另一個線程在任何需要獲取class做為monitor的地方等待。class和this可以同時使用。
1. 對於實例同步方法,鎖定當前實例對象;
2. 對於靜態同步方法,鎖定當前對象的class對象;
3. 對於方法同步塊,synchronized鎖定括號內配置的對象。
class與this的幾種情況:
synchronized(class)
synchronized(this)
線程各自獲取monitor,不會等待;
synchronized(this)
synchronized(this)
如果不同線程監視同一個實例對象,就會等待;如果不同的實例,就不會等待;
synchronized(class)
synchronized(class)
如果不同線程監聽同一個實例或不同的實例對象,都會等待。
Java synchronized (1)