240 發(fā)簡信
IP屬地:四川
  • 120
    深入理解JVM-內(nèi)存模型(jmm)和GC

    1 CPU和內(nèi)存的交互 了解jvm內(nèi)存模型前船老,了解下cpu和計算機內(nèi)存的交互情況咖熟。【因為Java虛擬機內(nèi)存模型定義的訪問操作與計算機十分相似】 有篇很棒的文章柳畔,從cpu講到內(nèi)...

  • 原子性馍管,對volatile變量的讀寫具有原子性,即單純讀和寫的操作薪韩,都不會受到干擾确沸。這里有誤
    public class VolatileTest {
    private static volatile int INIT_VALUE = 0;

    private final static int MAX_LIMIT = 500;

    public static void main(String[] args) {
    new Thread(() -> {
    while (INIT_VALUE < MAX_LIMIT) {
    System.out.println("T1->" + (++INIT_VALUE));
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }, "ADDER-1").start();

    new Thread(() -> {
    while (INIT_VALUE < MAX_LIMIT) {
    System.out.println("T2->" + (++INIT_VALUE));
    try {
    Thread.sleep(10);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }, "ADDER-2").start();
    }
    }

    部分打印結(jié)果:
    T1->19
    T2->20
    T1->21
    T1->22
    T2->23
    T1->24
    T2->25
    T1->26
    T2->26
    T1->27
    T2->27
    T2->28
    T1->28
    T1->29
    T2->30
    T1->32

    ++INIT_VALUE 操作分三步:
    a.讀取變量 INIT_VALUE的值 -> 26
    INIT_VALUE 的值+1 -> 26+1
    將值賦予變量 INIT_VALUE -> INIT_VALUE=27
    由于這三步中的任意一步線程都可能放棄cpu執(zhí)行權(quán),其他線程獲取到執(zhí)行權(quán)后如果一步完成,就會出現(xiàn)上圖的情況

    深入理解JVM-內(nèi)存模型(jmm)和GC

    1 CPU和內(nèi)存的交互 了解jvm內(nèi)存模型前,了解下cpu和計算機內(nèi)存的交互情況俘陷÷奚樱【因為Java虛擬機內(nèi)存模型定義的訪問操作與計算機十分相似】 有篇很棒的文章,從cpu講到內(nèi)...

亚洲A日韩AV无卡,小受高潮白浆痉挛av免费观看,成人AV无码久久久久不卡网站,国产AV日韩精品