線程同步的幾種方法


1. 用什么關鍵字修飾同步方法 ? 用synchronized關鍵字修飾同步方法

2. 同步有幾種實現方法,都是什么?分別是synchronized,wait與notify

wait():使一個線程處於等待狀態,並且釋放所持有的對象的lock。
sleep():使一個正在運行的線程處於睡眠狀態,是一個靜態方法,調用此方法要捕捉InterruptedException異常。
notify():喚醒一個處於等待狀態的線程,注意的是在調用此方法的時候,並不能確切的喚醒某一個等待狀態的線程,而是由JVM確定喚醒哪個線程,而且不是按優先級。
notityAll():喚醒所有處入等待狀態的線程,注意並不是給所有喚醒線程一個對象的鎖,而是讓它們競爭。

 

3.特殊域變量,volatile,注意不能修飾final的變量. 
a.volatile關鍵字為域變量的訪問提供了一種免鎖機制 
b.使用volatile修飾域相當於告訴虛擬機該域可能會被其他線程更新 
c.因此每次使用該域就要重新計算,而不是使用寄存器中的值 
d.volatile不會提供任何原子操作,它也不能用來修飾final類型的變量


4.使用重入鎖ReentrantLock 
在JavaSE5.0中新增了一個Java.util.concurrent包來支持同步。ReentrantLock類是可重入、互斥、實現了Lock接口的鎖.


5.使用局部變量ThreadLocal實現.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM