과도 및 휘발성 수정 자란 무엇입니까?
누군가 Java에서 transient
및 volatile
수정자가 무엇을 의미 하는지 설명 할 수 있습니까 ?
volatile
및 transient
개질제는 클래스 필드에 적용 할 수있는 1 필드 유형에 관계없이. 그 외에도, 그들은 관련이 없습니다.
transient
수정은 클래스의 인스턴스를 직렬화 할 때 필드를 제외하는 자바 객체 직렬화 서브 시스템을 말한다. 그런 다음 객체를 직렬화 해제하면 필드가 기본값으로 초기화됩니다. 즉 null
, 참조 유형, 0 또는 false
기본 유형. JLS ( 8.3.1.3 참조 )는 무슨 transient
의미 인지 말하지 않지만 Java 객체 직렬화 사양을 지연시킵니다 . 다른 직렬화 메커니즘 은 필드의 transient
특성에 주의를 기울일 수 있습니다 . 아니면 무시해도됩니다.
(JLS에서는 static
필드를로 선언 할 수 있습니다 transient
.이 조합은 어쨌든 정적을 직렬화하지 않기 때문에 Java Object Serialization에는 적합하지 않습니다. 그러나 다른 상황에서는 의미가있을 수 있습니다. 완전히 금지하지 마십시오.)
volatile
수정은 필드에 쓰기는 항상 기적 메모리에 플러시되어야하고, 그 항상 메모리에서 읽어 분야의 읽고있는 JVM을 알려줍니다. 즉, 휘발성으로 표시된 필드는 기본 또는 표준 라이브러리 기반 동기화를 사용하지 않고 멀티 스레드 응용 프로그램에서 안전하게 액세스하고 업데이트 할 수 있습니다. 마찬가지로, 휘발성 필드에 대한 읽기 및 쓰기는 원자 적입니다. (이는 비 휘발성 << long
또는 double
필드 에는 적용되지 않으며 일부 JVM에서 "단어"가 발생할 수 있습니다.) JLS의 관련 부분은 8.3.1.4 , 17.4 및 17.7 입니다.
1-그러나 지역 변수 또는 매개 변수에는 해당되지 않습니다.
휘발성은 다른 스레드가 해당 특정 변수를 편집 할 수 있음을 의미합니다. 따라서 컴파일러는 액세스를 허용합니다.
http://www.javamex.com/tutorials/synchronization_volatile.shtml
과도 란 객체를 직렬화 할 때 직렬화 해제시 기본값을 반환 함을 의미합니다.
http://www.geekinterview.com/question_details/2
volatile
및 transient
키워드
1) transient
키워드는 인스턴스 변수와 함께 사용되어 직렬화 프로세스에서 제외됩니다. 필드가 transient
그 값 이면 지속되지 않습니다.
한편, volatile
키워드는 Java 변수를 "주 메모리에 저장되는"것으로 표시하는 데 사용됩니다.
volatile
변수 의 모든 읽기는 CPU 캐시가 아닌 컴퓨터의 주 메모리에서 읽히고 변수 에 대한 모든 쓰기 volatile
는 CPU 캐시뿐만 아니라 주 메모리에도 작성됩니다.
2) transient
키워드는 static
키워드 volatile
와 함께 사용할 수 없지만와 함께 사용할 수 있습니다 static
.
3) transient
변수는 역 직렬화 중에 기본값으로 초기화되며 값의 할당 또는 복원은 응용 프로그램 코드로 처리해야합니다.
자세한 내용은 내 블로그를 참조하십시오 :
http://javaexplorer03.blogspot.in/2015/07/difference-between-volatile-and.html
참고 URL : https://stackoverflow.com/questions/3544919/what-are-transient-and-volatile-modifiers
'Programing' 카테고리의 다른 글
TFS 코드 검토-주석에 대한 응답으로 업데이트 된 파일 표시 (0) | 2020.07.16 |
---|---|
node.js와 io.js의 차이점은 무엇입니까? (0) | 2020.07.16 |
Amazon 제품 API-기본 개요 및 정보 찾기 (0) | 2020.07.16 |
const_iterator와 iterator의 차이점은 무엇입니까? (0) | 2020.07.16 |
WPF DataGrid를 가변 개수의 열에 어떻게 바인딩합니까? (0) | 2020.07.16 |