多執行緒同步的五種方法
阿新 • • 發佈:2018-12-30
2、同步程式碼塊;
3、使用特殊域變數(volatile)實現執行緒同步;
- volatile關鍵字為域變數的訪問提供了一種免鎖機制
- 使用volatile修飾域相當於告訴虛擬機器該域可能會被其他執行緒更新
- 每次使用該域就要重新計算,而不是使用暫存器中的值
- volatile不會提供任何原子操作,它也不能用來修飾final型別的變數
4、使用重入鎖實現執行緒同步(Reenreantlock類),ReentrantLock類是可重入、互斥、實現了Lock介面的鎖,它與使用synchronized方法和快具有相同的基本行為和語義,並且擴充套件了其能力。
使用:lock() ….(程式碼塊) unlock()
5、使用區域性變數實現執行緒同步。
使用:ThreadLocalcount=newThreadLocal();
如果使用ThreadLocal管理變數,則每一個使用該變數的執行緒都獲得該變數的副本,副本之間相互獨立,這樣每一個執行緒都可以隨意修改自己的變數副本,而不會對其他執行緒產生影響。
ThreadLocal與同步機制
- ThreadLocal與同步機制都是為了解決多執行緒中相同變數的訪問衝突問題
- 前者採用以”空間換時間”的方法,後者採用以”時間換空間”的方式