當前位置:編程學習大全網 - 源碼下載 - 多線程同步有幾種實現方法

多線程同步有幾種實現方法

壹、java允許多線程並發控制,當多個線程同時操作壹個可***享的資源變量時(如數據的增刪改查),

將會導致數據不準確,相互之間產生沖突,因此加入同步鎖以避免在該線程沒有完成操作之前,被其他線程的調用, 從而保證了該變量的唯壹性和準確性。

二、實現方法:

1、同步方法

即有synchronized關鍵字修飾的方法。

由於java的每個對象都有壹個內置鎖,當用此關鍵字修飾方法時,內置鎖會保護整個方法。在調用該方法前,需要獲得內置鎖,否則就處於阻塞狀態。

代碼如: public synchronized void save(){}123

註: synchronized關鍵字也可以修飾靜態方法,此時如果調用該靜態方法,將會鎖住整個類

2、同步代碼塊

即有synchronized關鍵字修飾的語句塊。被該關鍵字修飾的語句塊會自動被加上內置鎖,從而實現同步。

3、使用特殊域變量(volatile)實現線程同步

1)volatile關鍵字為域變量的訪問提供了壹種免鎖機制;

2)使用volatile修飾域相當於告訴虛擬機該域可能會被其他線程更新,

3)因此每次使用該域就要重新計算,而不是使用寄存器中的值

4)volatile不會提供任何原子操作,它也不能用來修飾final類型的變量

4、使用重入鎖實現線程同步

在JavaSE5.0中新增了壹個java.util.concurrent包來支持同步。

ReentrantLock類是可重入、互斥、實現了Lock接口的鎖,它與使用synchronized方法和快具有相同的基本行為和語義,並且擴展了其能力

5、使用局部變量實現線程同步

如果使用ThreadLocal管理變量,則每壹個使用該變量的線程都獲得該變量的副本,副本之間相互獨立,這樣每壹個線程都可以隨意修改自己的變量副本,而不會對其他線程產生影響。

  • 上一篇:前端怎麽請求nodejs寫的接口操作mongodb
  • 下一篇:linux0.11linux0
  • copyright 2024編程學習大全網