1. 程式人生 > >Java synchronized (1)

Java synchronized (1)

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)