1. 程式人生 > >多執行緒同步的五種方法

多執行緒同步的五種方法

2、同步程式碼塊;

3、使用特殊域變數(volatile)實現執行緒同步;

  • volatile關鍵字為域變數的訪問提供了一種免鎖機制
  • 使用volatile修飾域相當於告訴虛擬機器該域可能會被其他執行緒更新
  • 每次使用該域就要重新計算,而不是使用暫存器中的值
  • volatile不會提供任何原子操作,它也不能用來修飾final型別的變數

4、使用重入鎖實現執行緒同步(Reenreantlock類),ReentrantLock類是可重入、互斥、實現了Lock介面的鎖,它與使用synchronized方法和快具有相同的基本行為和語義,並且擴充套件了其能力。
使用:lock() ….(程式碼塊) unlock()

5、使用區域性變數實現執行緒同步。
使用:ThreadLocalcount=newThreadLocal();
如果使用ThreadLocal管理變數,則每一個使用該變數的執行緒都獲得該變數的副本,副本之間相互獨立,這樣每一個執行緒都可以隨意修改自己的變數副本,而不會對其他執行緒產生影響。

ThreadLocal與同步機制

  • ThreadLocal與同步機制都是為了解決多執行緒中相同變數的訪問衝突問題
  • 前者採用以”空間換時間”的方法,後者採用以”時間換空間”的方式