多線程之同步代碼塊學習筆記
阿新 • • 發佈:2018-08-08
dem 結束 pre 情況下 int 之前 pub 並發 代碼
1.什麽情況下需要同步
* 當多線程並發, 有多段代碼同時執行時, 我們希望某一段代碼執行的過程中CPU不要切換到其他線程工作. 這時就需要同步.
* 如果兩段代碼是同步的, 那麽同一時間只能執行一段, 在一段代碼沒執行結束之前, 不會執行另外一段代碼.
* 2.同步代碼塊
* 使用synchronized關鍵字加上一個鎖對象來定義一段代碼, 這就叫同步代碼塊
* 多個同步代碼塊如果使用相同的鎖對象, 那麽他們就是同步的
class Printer {
Demo d = new Demo();
public static void print1() {
synchronized(d){ //鎖對象可以是任意對象,但是被鎖的代碼需要保證是同一把鎖,不能用匿名對象
System.out.print("黑");
System.out.print("馬");
System.out.print("程");
System.out.print("序");
System.out.print("員");
System.out.print("\r\n");
}
}
public static void print2() {
synchronized(d){
System.out.print("傳");
System.out.print("智");
System.out.print("播");
System.out.print("客");
System.out.print("\r\n");
}
}
}
多線程之同步代碼塊學習筆記