當多個執行緒訪問某個類時,(不管執行時採用何種排程方式或者執行緒如何交替執行,主調**中不需要任何額外的同步或協同)這個類始終都能表現出正確的行為,那麼就稱這個類是執行緒安全的。
執行緒安全性的根源在於多執行緒對共享變數的併發訪問出現的:
有三種方式可以修復這個問題:
將狀態變數修改為不可變的變數(final關鍵字)
在訪問狀態變數時使用同步(synchronized/lock)
也可以使用或設計不可變類來保證執行緒安全可參見: 不可變類的設計
三種方式**示例:
1.區域性變數
public int count()
return number;
}
2.共享變數-final關鍵字(final域必須為不可變物件)
public static final integer one = 1;
如果在設計不可變類時,那麼在構造方法或靜態工廠方法時應初始化資料,不能對外提供設值方法。
3.同步鎖(synchronized/lock)
synchronized(lock)
C 併發實戰 (二)執行緒管理
前一篇沒用markdown編輯器感覺不好看,刪了重新發 本篇主要講述執行緒的管理,主要包括建立和使用執行緒 執行緒出現是為了執行任務,執行緒建立時會給乙個入口函式,當這個函式返回時,該執行緒就會退出,最常見的main 函式就是主線程的入口函式,在main 函式返回時主線程就結束了。如何啟動乙個執行緒...
Java併發程式設計實戰筆記(4) 執行緒實現方式
通常我們比較清楚的也比較常見的執行緒實現方式都是一下兩種 這兩個都有乙個缺點就是在執行完之後無法獲取執行結果,如果非要獲取執行結果,只有通過共享變數或者使用執行緒通訊的方式,但是這樣的話是比較麻煩的。jdk1.5之後,就提供了callable和future,通過他們可以在任務執行完成之後獲取執行結果...
Java併發程式設計實戰筆記 1 執行緒安全簡介
資源利用率 程式在等待操作執行完成的空檔,執行另乙個程式 提高資源利用率。公平性使用者對於計算機的使用權,通過粗粒度的時間分片 使得使用者和程式共享資源程式。便利 效率性 乙個任務分解多個子任務,必要時通訊共同完成任務。非同步事件的簡單處理 對於單執行緒而言,如果要高效處理多個操作,必須使用非阻塞i...