English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
volatile 키워드는 두 스레드가 동시에 동일한 변수를 읽고 쓰는 멀티스레드 환경에서 사용됩니다. volatile 키워드는 변경 사항을 CPU 캐시 대신 메인 메모리에 직접 반영합니다.
반면에 시리얼라이즈 과정에서 transient 키워드가 사용됩니다. transient으로 표시된 필드는 시리얼라이즈와 디시리얼라이즈의 일부가 될 수 없습니다. 어떤 변수의 값을 저장하지 않고자 한다면, 그 변수와 함께 transient 키워드를 사용합니다.
순번 | 키 | 가변적인 | 단기적인 |
---|---|---|---|
1 | 기본적인 | Volatile 키워드는 변경 사항을 직접 메인 메모리에 반영합니다 | 시나리오 키워드는 시리얼라이즈 중에 변수를 제외하는 데 사용됩니다 |
2。 | 기본 값 | 가변성은 기본 값으로 초기화하지 않습니다. | 反시리얼라이즈 중에, 기본 값으로 초기화됩니다. |
3 | 정적 | 가변성은 정적 변수와 함께 사용할 수 있습니다. | static 키워드와 함께 사용할 수 없습니다. |
4 | 마지막에 | final 키워드와 함께 사용할 수 있습니다. | 瞬간적은 final 키워드와 함께 사용할 수 없습니다. |
// transient 키워드를 사용하는 샘플 클래스 //시리얼라이즈를 건너뜀. class TransientExample implements Serializable { transient int age; //기타 필드의 시리얼라이즈 private String name; private String address; //다른 코드 }
class VolatileExmaple extends Thread{ boolean volatile isRunning = true; public void run() { long count = 0; while (isRunning) { count++; } System.out.println("스레드 종료."); + 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); } }