一、
/*
* 題目:判斷列印的 "one" or "two" ?
* * 1. 兩個普通同步方法,兩個執行緒,標準列印, 列印? //one two
* 2. 新增 thread.sleep() 給 getone() ,列印? //one two
* 3. 新增普通方法 getthree() , 列印? //three one two
* 4. 兩個普通同步方法,兩個 number 物件,列印? //two one
* 5. 修改 getone() 為靜態同步方法,列印? //two one
* 6. 修改兩個方法均為靜態同步方法,乙個 number 物件? //one two
* 7. 乙個靜態同步方法,乙個非靜態同步方法,兩個 number 物件? //two one
8. 兩個靜態同步方法,兩個 number 物件? //one two
* * 執行緒八鎖的關鍵:
* ①非靜態方法的鎖預設為 this, 靜態方法的鎖為 對應的 class 例項
* ②某乙個時刻內,只能有乙個執行緒持有鎖,無論幾個方法。
*/
例子、
public class testthread8monitor
}).start();
new thread(new runnable()
}).start();
/*new thread(new runnable()
}).start();*/}}
class number catch (interruptedexception e)
system.out.println("one");
}public synchronized void gettwo()
public void getthree()
}
執行緒與程序 執行緒三把鎖
學習三把鎖時候我們需要先知道為什麼要有三把鎖 全域性資源 counter 被搶占的情況,問題產生的原因就是沒有控制多個執行緒對同一資源的訪問,對資料造成破壞,使得執行緒執行的結果不可預期。這種現象稱為 執行緒不安全 在開發過程中我們必須要避免這種情況,那怎麼避免?這就用到了我們在綜述中提到的互斥鎖了...
JUC學習之執行緒8鎖
介紹執行緒8鎖圍繞乙個題目展開,題目 列印的是 one 還是 two 1.兩個普通同步方法,兩個執行緒,列印?public class testthread8monitor start new thread new runnable start class number public synchro...
監視鎖 Lock 限制執行緒個數的一把鎖
為什麼要用鎖?在多執行緒中,尤其是靜態資源的訪問,必然會有競爭 private static int nums 0 private static object mylock new object static void method12 static void testmethod lock是mon...