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); } }