Java 多執行緒同步 synchronized

2021-06-29 10:43:15 字數 946 閱讀 2087

在多執行緒程式設計環境下,對於共享資源(比如多執行緒共享的變數)的寫操作時,不同執行緒之間假如沒有相互同步,而是隨機讀取、更改變數回寫到記憶體中,就會出現混亂和錯誤!因此必須要在多執行緒的操作方法上新增鎖物件,當乙個執行緒進入操作的時候,其它執行緒必須要等待,這樣依次序列完成任務。

synchronized關鍵字可以將物件或者方法標記為同步,以實現對物件和方法的互斥訪問,可以用synchronized(物件) 定義同步**塊,或者在宣告方法時將synchronized作為方法的修飾符。

下面以銀行存錢的例子來說明多執行緒同步的用途。多個執行緒往乙個賬號存錢的問題!

public class account catch (exception e)

balance = newbalance;

"now balance = "+balance);

}public double getbalance()

}

public class addmoneythread implements runnable 

@override

public void run()

}

測試**:

public class testmultthread 

executorservice.shutdown();

while (!executorservice.isterminated());

system.out.println("balance = " + account.getbalance());

}}

假如多執行緒**沒有加同步鎖的話,多個執行緒很可能取到的初始值都是0,都在加一,混亂的讀寫,導致多執行緒結束時,存款總數小於10,明顯不正確。

但是在在存款方法上加了synchronized ,多執行緒就有順序了,結果就是100。 

JAVA多執行緒同步

1.同步 塊 synchronized 物件 例程 package cn.wf.thread1 多執行緒同步 同步 塊 author wf public class thread test class thread01 implements runnable trycatch interrupted...

java多執行緒 同步

2019獨角獸企業重金招聘python工程師標準 synchronized關鍵字鎖的物件可以是方法 變數 類和當前例項。synchronized不能被繼承,子類將自動去除synchronized關鍵字 public synchronized void 變為public void 方法public s...

java多執行緒值執行緒同步

在多執行緒的操作中,多個執行緒有可能同時處理同一資源,這就是多執行緒的共享資料。如下程式 public class threaddemo catch interruptedexception e catch interruptedexception e catch interruptedexcept...