1、無狀態的對象一定是線程安全的。
2、不恰當的執行時序,出現不正確的結果,定義爲競態條件。
3、單狀態變量,使用原子類型
4、多狀態變量交互,使用synchronzied,包括2部分,1、要鎖定的對象 2、要保護的代碼塊。
被保護的代碼塊,操作可看成一個事務。
5、內置鎖是可重入的,也就是自己去獲取自己已經獲得了鎖的鎖的時候,可以獲得。
6、一種加鎖約定:將所有可變對象都放入對象內部,通過內部鎖來加持所有涉及可變對象的操作。
7,內部鎖可以確保單個函數或代碼塊的原子性,但當多個內部鎖保護的函數一塊組成操作時,也許加鎖保護。
8、要仔細權衡鎖的大小,太大,影響性能。太小會打不成同步目的,或徒增複雜度。
要在安全性,性能,簡單性這3個方面做平衡。