자바 다 중 스 레 드-volatile 쓰 고 바로 읽 기

750 단어 자바
volatile 스 레 드 가 변 수 를 수정 한 후 즉시 메 인 메모리 스 레 드 로 돌아 가 변 수 를 읽 을 때 메 인 메모리 에서 읽 습 니 다.버퍼 가 아 닌 메 인 메모리 에서 읽 습 니 다.명령 재 정렬 을 피 합 니 다.
순환 을 해제 할 수 없 음
public class my {

private volatile static int num=0;
public static void main(String[]args) throws InterruptedException
{
    new Thread(()->{

        while(num==0)
        {

        }
    }).start();
    Thread.sleep(1000);
    num=1; //   1    ,           num
}

}

수정 후:
public class my {

private volatile static int num=0;
public static void main(String[]args) throws InterruptedException
{
    new Thread(()->{

        while(num==0)
        {

        }
    }).start();
    Thread.sleep(1000);
    num=1; //   1    ,           num
}

좋은 웹페이지 즐겨찾기