線程安全
java語言中的線程安全
1 不可變。 Immutable 的物件一定是執行緒安全的
2 絕對執行緒安全一個類別要達到不管執行時間環境如何,呼叫者都不需要額外的同步措施,通常需要付出很大甚至是不切實際的代價,在java api中標註自己是線程安全的類,大多數都不是絕對的線程安全
3 相對線程安全
4 線程兼容 對象本身不是線程安全的,但是可以通過調用端正確地使用同步手段來保證對像在對象並發環境中可以安全使用
5 執行緒對立
執行緒安全性的實作方法
1 互斥同步Murual Exclusion & Synchronization
〕正確性手機中的常見資料並發接性?保存證共享資料在同一時刻只被一個執行緒使用
最基本的互斥手段是synchronized關鍵字。
也可以使用java.util.concurrent包中的鎖來實現同步 ReentrantLock,
JDK1.6對synchronized優化,效率做了優化,效率與ReentLock基本上是完全持平了。
2 非阻塞同步
基於衝突偵測的樂觀並發策略
CAS操作Compare-and-Swap鎖與自適應自旋
2、鎖消除
3、鎖粗化
4、經量級鎖
5、偏向鎖