銀行有乙個賬戶。 有兩個儲戶分別向同乙個賬戶存3000元,每次存1000,存3次。每次存完打 印賬戶餘額。
問題:該程式是否有安全問題,如果有,如何解決?
【提示】
確哪些**是多執行緒執行**,須寫入run()方法
明確什麼是共享資料。
明確多執行緒執行**中哪些語句是操作共享資料的。
/**
* 銀行有乙個賬戶。
有兩個儲戶分別向同乙個賬戶存3000元,每次存1000,存3次。每次存完列印賬戶餘額。
分析:1.是否是多執行緒問題? 是,兩個儲戶執行緒
2.是否有共享資料? 有,賬戶(或賬戶餘額)
3.是否有執行緒安全問題?有
4.需要考慮如何解決執行緒安全問題?同步機制:有三種方式。
*/class
account
//存錢
public
synchronized
void
deposit
(double amt)
catch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+":存錢成功。餘額為:"
+ balance);}
}}class
customer
extends
thread
@override
public
void
run()}
}public
class
accounttest
}
執行緒同步 執行緒安全
1 執行緒同步 1 同步 多程序或者多執行緒訪問臨界資源時,必須進行同步控制。多程序或者多執行緒的執行並不完全是絕對的並行執行,有可能主線程需要等待函式執行緒的某些條件的發生。2 多執行緒之間有幾個特殊的臨界資源 全域性資料 堆區資料 檔案描述符 多執行緒之間共用 3 執行緒間同步控制方式 a.訊號...
執行緒同步和執行緒安全
執行緒同步,嚴格來說,是程式通過專用的機制來保證多個並行執行的執行緒在同一時刻不會執行指定的程式段。的執行緒安全,指的是多執行緒以安全執行的方式操作共享資料結構。或者簡單的說,就是程式在多執行緒環境下執行而不會引發資料錯誤。有多種策略實現執行緒安全的資料結構。執行緒同步是現實執行緒安全的一種手段。不...
執行緒安全與執行緒同步
執行緒安全 可重入函式 執行緒之間共享全域性資料段 靜態資料,引起非執行緒安全。執行緒安全可以通過執行緒同步對臨界資源訪問進行控制來實現。有些系統呼叫或者庫函式的實現時發生不安全現象,在多執行緒環境下就需要使用這些函式的安全版本,即可重入函式。例如 字串分割函式 普通版本 char strtok c...