일시적 수식어와 휘발성 수식어가 뭐죠?
'을'이라고 하는지 좀 .transient
★★★★★★★★★★★★★★★★★」volatile
Java ★★★★★★★★★★★★★★★★★★★★★★★★★★ ★★
volatile
★★★★★★★★★★★★★★★★★」transient
필드 유형에 관계없이 클래스 필드에1 수식자를 적용할 수 있습니다.그것 말고는 그들은 관계가 없다.
transient
modifier의 할 때 합니다.그런 다음 오브젝트가 역직렬화되면 필드는 기본값(예: null
타입의 는, 0 「0」이 됩니다.false
원시적인 타입으로요.JLS(제8.3.1.3항 참조)에서는, 다음의 정보가 표시되지 않는 것에 주의해 주세요.transient
는 Java 오브젝트시리얼라이제이션 사양에 준거합니다.다른 직렬화 메커니즘은 필드의 다음 항목에 주의할 수 있습니다.transient
아니면 무시할지 몰라
는 (JLS)를 하고 있는 해 주세요.static
[ ] 로 transient
이 조합은 Java 오브젝트시리얼라이제이션에서는 의미가 없습니다.왜냐하면 스태틱스는 시리얼라이제이션되지 않기 때문입니다.그러나 다른 맥락에서는 이 방법이 타당할 수 있기 때문에 이를 완전히 금지하지 않아도 되는 이유가 있습니다.)
volatile
수식자는 JVM에 필드에 쓰기는 항상 메모리에 동기적으로 플러시되어야 하며 필드의 읽기는 항상 메모리에서2 읽어야 함을 알려줍니다.즉, 네이티브 또는 표준 라이브러리 기반 동기화를 사용하지 않고도 다중 스레드 응용 프로그램에서 휘발성이라고 표시된 필드에 안전하게 액세스하고 업데이트할 수 있습니다.마찬가지로 휘발성 필드에 대한 읽기 및 쓰기도 원자적입니다.(이는 >> 비휘발성 <<에는 적용되지 않습니다).long
★★★★★★★★★★★★★★★★★」double
일부 JVM에서는 "단어 찢기"가 발생할 수 있습니다.)JLS의 관련 부분은 8.3.1.4, 17.4 및 17.7입니다.
- 단, 되지 않습니다.1 - ,, 、 컬 1 、 1 1 1 1 1 1 。
- 이을 차리지 않고하게 설명하고 있습니다.2 - 이이의 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 。예를 들어, 휘발성 쓰기 전에 발생하는 비휘발성 쓰기의 가시성에는 추가적인 영향이 있습니다.JLS 17( 는, 의 「 17해 주세요.volatile
모델화된 사용할 수 .JMM 사양은 모델링된 동작에 관한 것이며 플랫폼레벨에서의 동작의 실장 방법에 관계없이 사용할 수 있습니다.
volatile
★★★★★★★★★★★★★★★★★」transient
(키워드)
1)transient
키워드는 인스턴스 변수와 함께 시리얼화 프로세스에서 제외하기 위해 사용됩니다.필드가 다음과 같은 경우transient
값은 유지되지 않습니다.
반,는volatile
키워드는 Java 변수를 "메인 메모리에 저장됨"으로 마크하기 위해 사용됩니다.
every volatile
캐시가 CPU에 대한 .volatile
변수는 CPU 캐시뿐만 아니라 메인 메모리에 기록됩니다.
2)transient
는, 「키워드」와 함께 할 수 .static
단, ""volatile
할 수 static
.
3)transient
변수는 디폴트값으로 초기화되므로 값의 할당 또는 복원은 애플리케이션 코드로 처리되어야 합니다.
상세한 것에 대하여는, 다음의 블로그를 참조해 주세요.
http://javaexplorer03.blogspot.in/2015/07/difference-between-volatile-and.htmlhttpjavaexplorer03.blogspot.in/2015/07/.html
휘발성은 다른 스레드가 특정 변수를 편집할 수 있음을 의미합니다.컴파일러가 접근 권한을 부여합니다.
http://www.javamex.com/tutorials/synchronization_volatile.shtml
Transient는 오브젝트를 시리얼화할 때 디시리얼라이제이션 시 디폴트값이 반환되는 것을 의미합니다.
http://www.geekinterview.com/question_details/2
과도:
먼저 어떻게 그 차이를 메우는지 알아야 합니다.
1) 액세스 수식어 과도현상은 가변 컴포넌트에만 적용됩니다.메서드 또는 클래스에는 사용되지 않습니다.
2) transient 키워드는 static 키워드와 함께 사용할 수 없습니다.
3) 시리얼라이제이션이란 무엇이며 어디에 사용되는가?직렬화는 개체의 상태를 영속적으로 만드는 프로세스입니다.즉, 오브젝트 상태가 지속(예를 들어 파일에 바이트 저장) 또는 전송(예를 들어 네트워크를 통한 바이트 전송)에 사용되는 바이트 스트림으로 변환됩니다.마찬가지로 역직렬화를 사용하여 바이트에서 오브젝트 상태를 되돌릴 수 있습니다.이것은 Java 프로그래밍에서 중요한 개념 중 하나입니다. 왜냐하면 직렬화는 네트워킹 프로그래밍에서 주로 사용되기 때문입니다.네트워크를 통해 전송해야 하는 오브젝트는 바이트로 변환해야 합니다.transient 키워드를 이해하기 전에 시리얼화의 개념을 이해해 둘 필요가 있습니다.독자가 시리얼화에 대해 알고 있는 경우는, 첫 번째 포인트는 생략해 주세요.
주 1) Transient는 주로 serialzation 프로세스에 사용됩니다.그러기 위해서는, 클래스에서는 java.io 를 실장할 필요가 있습니다.시리얼 대응 인터페이스.클래스의 모든 필드는 직렬화 가능해야 합니다.필드를 직렬화할 수 없는 경우 임시로 표시해야 합니다.
주 2) deserialize 프로세스가 발생하면 type 제약조건에 따라 기본값인 0, false 또는 null로 설정됩니다.
주 3) Transient 키워드 및 그 목적일시적 수식자로 선언된 필드는 직렬화된 프로세스에 참여하지 않습니다.오브젝트가 시리얼화(어느 상태로 저장)되면 해당 과도 필드의 값은 시리얼 표현에서 무시되고 과도 필드 이외의 필드는 시리얼화 프로세스에 참여합니다.이것이 transient 키워드의 주된 목적입니다.
언급URL : https://stackoverflow.com/questions/3544919/what-are-transient-and-volatile-modifiers
'programing' 카테고리의 다른 글
MySQL - 쿼리 속도를 테스트하기 위해 캐시를 사용하지 않음 (0) | 2023.02.06 |
---|---|
도커가 다른 사용자로 localhost에서 mariadb에 연결할 수 없습니다. (0) | 2023.01.31 |
MySql에 대한 Java 길이 (0) | 2023.01.31 |
명령줄 경유로 csv를 mysql로 Import (0) | 2023.01.31 |
구글 지도 V3에서 두 점 사이의 거리를 계산합니다. (0) | 2023.01.31 |