因為有些被使用比較少,只簡單列舉了一下
四十六、努力使失敗保持原子性
1,一般而言,一個失敗的方法調(diào)用應(yīng)該使對象保持"它在被調(diào)用之前的狀態(tài)",具有這種屬性的方法被稱為具有
失敗原子性。
四十七、不要忽略異常
例如這樣的代碼是錯誤的
try{
?//.....
}catch(SomeException e){
}
四十八、對共享可變數(shù)據(jù)要同步訪問
注:Java的雙重檢查模式并不保證一定正確
四十九、避免過多的同步
1,為了避免死鎖的危險,在一個被同步的方法或者代碼中,永遠(yuǎn)不要放棄對客戶的控制。
2,通常同步區(qū)域內(nèi)應(yīng)該做盡可能少的工作
五十、永遠(yuǎn)不要在循環(huán)外部調(diào)用wait
五十一、不要依賴于線程調(diào)度器,因為這可能造成不可移植性
1,不要使用Thread.yield來修正程序,因為在不同的Jdk中,不能移植
2,線程優(yōu)先級是Java平臺上最不可移植的特征了。
3,對大多數(shù)程序員來說,Thread.yield的唯一用途是在測試期間人為的增加一個程序的并發(fā)行。
五十二、線程安全性的文檔
一個類為了被多個線程安全的使用,必須在文檔中姓儲的說明它所支持的線程安全級別。
1,非可變。
2,線程安全的。
3,有條件的線程安全
4,線程兼容的
5,線程對立的。
五十三、避免使用線程組
五十四、謹(jǐn)慎的實現(xiàn)Serializable
五十五、考慮使用自定義的序列化形式
五十六、保護(hù)的編寫readObject方法
五十七、必要時提供一個readResolve方法