synchronized和reentrantlock的區別
reentrantlock如何精確喚醒執行緒設定場景:三個執行緒按順序呼叫,實現執行緒a→b→c依次啟動,其中a列印 1 次,b列印 2 次,c列印 3 次,再如此迴圈 3 次
class shareres
for (int i = 1; i <= 1; i++)
num = 2;
conditionb.signal();
}catch (exception e)finally
}void print2()
for (int i = 1; i <= 2; i++)
num = 3;
conditionc.signal();
}catch (exception e)finally
}void print3()
for (int i = 1; i <= 3; i++)
num = 1;
conditiona.signal();
}catch (exception e)finally
}}public class locktraditiondemo
}},"執行緒a").start();
new thread(new runnable()
}},"執行緒b").start();
new thread(new runnable()
}},"執行緒c").start();
}}----------------------------------
執行緒a 1
執行緒b 1
執行緒b 2
執行緒c 1
執行緒c 2
執行緒c 3
執行緒a 1
執行緒b 1
執行緒b 2
執行緒c 1
執行緒c 2
執行緒c 3
執行緒a 1
執行緒b 1
執行緒b 2
執行緒c 1
執行緒c 2
執行緒c 3
reentrantlock 繫結了三個條件物件,可以精確喚醒執行緒。 ReentrantLock實現同步
reentrantlock 也可以實現synchronized方法 塊的同步效果。reentrantlock 實現同步 如下 1 新建乙個service類 public class myservice public static void methodb 2 新建乙個測試類 public class...
ReentrantLock之unlock方法分析
public void unlock public final boolean release int arg return false release 1 嘗試在當前鎖的鎖定計數 state 值上減1。成功返回true,否則返回false。當然在release 方法中不僅僅只是將state 1這麼...
ReentrantLock 原理分析
public void lock 這是lock的原始碼,呼叫的其實是sync這個物件的lock函式,而sync是reentrantlock內部類sync的乙個物件例項,他有兩種實現nonfairsync 非公平鎖 和fairsync 公平鎖 先看公平鎖的lock函式 final void lock ...