多執行緒同步 synchronize

2021-07-13 12:34:59 字數 2364 閱讀 8968

在專案中我們經常遇到這樣一種情況:兩個人同時運算元據庫,導致資料異常。針對於資料庫級別我們採用鎖機制,還有一種方法使規定我們方法呼叫的許可權,當你在使用這個資源的時候別人是不允許使用的,在多執行緒中只需要乙個修飾詞就可以實現:synchronize。

第一步: 下面我們採用銀行取錢的場景來**實現

account類:

public class account 

public void setaccountno(string accountno)

public double getbalance()

public void setbalance(double balance)

private double balance;

public account()

public account(string accountno,double balance)

public int hashcode()

public boolean equals(object obj)

return false;

}/*public synchronized void draw(double drawamount) catch (interruptedexception e)

balance-=drawamount;

system.out.println("\t餘額為:"+balance);

}else}*/

}

執行緒類:

public class drawthread extends thread

public void setdrawamount(double drawamount)

public account getaccount()

public void setaccount(account account)

public drawthread(string name, account account, double drawamount)

public void run() catch (interruptedexception e)

account.setbalance(account.getbalance()-drawamount);

system.out.println("\t餘額為:"+account.getbalance());

}else

}/*account.draw(drawamount);*/

// }

}

client進行測試:

public class testdraw 

}

多次執行出現的結果:

第二步:我們給我們需要執行的邏輯加上synchronize

run方法下面的

synchronized

(account

)解開注釋繼續執行,檢視結果。

多次執行結果只有:

第三步:給account加乙個有 synchronize修飾的draw方法,即將**中的draw注釋解除,drawthread方法中也需要改變:

public synchronized void draw(double drawamount) catch (interruptedexception e) 

balance-=drawamount;

system.out.println("\t餘額為:"+balance);

}else

}

drawthread中的run方法:

public void run()
執行結果:

總結:關於同步方法修飾詞

synchronize的使用我們分三步來走,第一步,不加修飾詞,多次執行會發現偶爾出現錯誤。第二步,當給accout實體加入synchronize修飾詞後發現多次執行也不會發生錯誤。第三步,給account實體加乙個有synchronize修飾的draw方法,大家會發現這樣雖然效果和第二步是一直的,但是在靈活性上明顯是第三步的修改要好很多。

Java執行緒同步問題synchronized

android usb 讀寫以前都是一讀一寫,但有些機器會出問題。就採用讀寫非同步的方法。使用物件鎖,object自帶的,然後使用object的方法wait和notify notifyall 使用方法簡單,記錄下 public synchronized int lra setregister int...

多執行緒同步

synchronized 物件 其中物件相當於乙個標誌 鎖 用於判斷 同步 塊 同步的前提必須是兩個或兩個以上的執行緒,且共用同乙個鎖 同步解決了多執行緒的安全問題 弊端 多執行緒需要判斷鎖,消耗了資源 同步函式 將synchronized放在函式名前面即可 即具有同步性質 使用的鎖是this 靜態...

多執行緒同步

同步 即限制某個資源在同一時間只能被同乙個執行緒訪問。執行緒安全問題 多個執行緒共同處理共享資源所導致的。解決 多執行緒處理乙個共享資源時,將處理共享資源的 利用關鍵字synchronized修飾。同步 塊 synchronized修飾 塊,synchronized lock 同步方法 synchr...