Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

자바의 휘발성과 일시적인 차이점

<시간/>

volatile 키워드는 두 개의 스레드가 동일한 변수를 동시에 읽고 쓰는 멀티스레딩 환경에서 사용됩니다. volatile 키워드는 변경 사항을 CPU 캐시 대신 주 메모리로 직접 플러시합니다.

반면에 일시적인 키워드는 직렬화 중에 사용됩니다. 일시적으로 표시된 필드는 직렬화 및 역직렬화의 일부가 될 수 없습니다. 변수의 값을 저장하고 싶지 않은 경우 해당 변수와 함께 일시적인 키워드를 사용합니다.

Sr. 아니요. 휘발성 일시적
1
기본
Volatile 키워드는 변경 사항을 주 메모리로 직접 플러시하는 데 사용됩니다.
transient 키워드는 직렬화 중에 변수를 제외하는 데 사용됩니다.
2.
기본값
휘발성은 기본값으로 초기화되지 않습니다.
역직렬화 중에 일시적인 변수는 기본값으로 초기화됩니다.
3
정적
휘발성은 정적 변수와 함께 사용할 수 있습니다.
Transient는 static 키워드와 함께 사용할 수 없습니다.
4
최종
Volatile은 final 키워드와 함께 사용할 수 있습니다.
transient는 final 키워드와 함께 사용할 수 없습니다.

과도 현상의 예

// A sample class that uses transient keyword to
// skip their serialization.
class TransientExample implements Serializable {
   transient int age;
   // serialize other fields
   private String name;
   private String address;
   // other code
}

휘발성의 예

class VolatileExmaple extends Thread{
   boolean volatile isRunning = true;
   public void run() {
      long count=0;
      while (isRunning) {
         count++;
      }
      System.out.println("Thread terminated." + count);
   }
   public static void main(String[] args) throws InterruptedException {
      VolatileExmaple t = new VolatileExmaple();
      t.start();
      Thread.sleep(2000);
      t.isRunning = false;
      t.join();
      System.out.println("isRunning set to " + t.isRunning);
   }
}