在Java中,volatile
關(guān)鍵字用于修飾變量,用來保證多線程下的可見性和順序性。具體來說,volatile
關(guān)鍵字具有以下作用:
可見性:當(dāng)一個(gè)變量被volatile
修飾時(shí),當(dāng)一個(gè)線程修改了這個(gè)變量的值,其他線程能夠立即看到這個(gè)修改,而不是等待變量被刷入主內(nèi)存。這樣可以避免線程之間的數(shù)據(jù)不一致。
有序性:volatile
關(guān)鍵字可以禁止指令重排序,即保證代碼中的指令按照程序順序執(zhí)行,不會(huì)被重新排列。
需要注意的是,volatile
關(guān)鍵字不能保證原子性,即不能保證復(fù)合操作的操作是原子性的,如果需要保證原子性,可以使用synchronized
關(guān)鍵字或者java.util.concurrent
包下的原子類。