Programing

과도 및 휘발성 수정 자란 무엇입니까?

lottogame 2020. 7. 16. 08:07
반응형

과도 및 휘발성 수정 자란 무엇입니까?


누군가 Java에서 transientvolatile수정자가 무엇을 의미 하는지 설명 할 수 있습니까 ?


volatiletransient개질제는 클래스 필드에 적용 할 수있는 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.417.7 입니다.


1-그러나 지역 변수 또는 매개 변수에는 해당되지 않습니다.


휘발성은 다른 스레드가 해당 특정 변수를 편집 할 수 있음을 의미합니다. 따라서 컴파일러는 액세스를 허용합니다.

http://www.javamex.com/tutorials/synchronization_volatile.shtml

과도 란 객체를 직렬화 할 때 직렬화 해제시 기본값을 반환 함을 의미합니다.

http://www.geekinterview.com/question_details/2


volatiletransient키워드

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

반응형