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