共計(jì) 413 個(gè)字符,預(yù)計(jì)需要花費(fèi) 2 分鐘才能閱讀完成。
在 Java 中,volatile 關(guān)鍵字用于修飾變量,用于保證可見性和禁止指令重排序。
- 可見性:當(dāng)一個(gè)變量被 volatile 修飾時(shí),它的修改將立即被其他線程可見。這是因?yàn)楫?dāng)一個(gè)線程修改了一個(gè) volatile 變量時(shí),JVM 會立即將該變量的最新值刷新到主內(nèi)存中,而當(dāng)其他線程讀取該變量時(shí),會從主內(nèi)存中重新加載最新值。
- 禁止指令重排序:在 Java 中,為了提高執(zhí)行效率,JVM 可能會對指令進(jìn)行重排序。然而,有些指令重排序會破壞多線程程序的正確性。當(dāng)一個(gè)變量被 volatile 修飾時(shí),JVM 會禁止對該變量的指令重排序,保證程序的執(zhí)行順序與代碼的順序一致。
需要注意的是,volatile 關(guān)鍵字只能保證單個(gè)變量的可見性和禁止指令重排序,不能保證多個(gè)操作之間的原子性。如果需要保證多個(gè)操作的原子性,可以使用 synchronized 關(guān)鍵字或者使用 java.util.concurrent.atomic 包中提供的原子類。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完