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實現.