액세스 제어 문자, 비 액세스 지정, 필드 수정

첫째, 범위에 대한 액세스 :

      공개> 보호> 디폴트 (즉, 패킷 액세스)> 전용 변수 [기본] 수정할 수없는

  은밀한  태만  보호  공공의 
같은 클래스 1   1 1 1
동일한 패키지의 클래스 0 1 1 1
아강 0 0 1 1
패키지의 다른 클래스 0 0 0 1

1, 액세스 제어 문자 :
  1) 공공 : 총 액세스 할 수 있습니다. 그들은 모든 클래스에 볼 수 있습니다.
  2) 보호 : 보호 유형 액세스를. 같은 패키지에 보이는, 패키지 다른 볼 하위 클래스.
  3) 기본 : 기본 액세스 할 수 있습니다. 표시는 동일한 패키지에 패키지의 다른 서브 클래스에주의를 기울이 표시되지 않습니다.
  4) 개인 : 개인 액세스 할 수 있습니다. 클래스 만 볼 경우, 나머지는 사라졌다. 도 2에서 비 - 액세스 제어   1) 클래스 변수와 클래스 메소드를 생성하는 정적 개질제.   클래스, 메소드 및 변수를 수정 2) 최종 수정 자, 최종 수정 된 클래스가 상속 할 수없는 클래스의 변형 방법은 상속 될 수는 변형 변수를 일정하게 재정의 수정 될 수 없다.   3) 추상적 수정 및 추상 클래스를 작성하기위한 추상적 인 방법.   4) 동기 다중 스레드를위한 동기화.   스레드가 액세스 될 때마다 강요 5) 휘발성 변형 멤버 변수 공유 메모리로부터의 멤버 변수의 값을 다시 읽어. 또한, 상기 변수의 변화의 부재, 스레드가 공유 메모리에 다시 기록 값을 변경해야하는 경우. 그래서 어느 순간, 두 개의 서로 다른 스레드가 항상 멤버 변수의 같은 값을 볼 수있다.





  6) 일시적 : 과도 변형 직렬화 된 오브젝트가 포함 된 인스턴스 변수는 JVM이 특정 변수를 생략.

3, 필드 수정

  새로운, 개인, 보호, 공공, 포함 내부, 정적 및 읽기 전용 몇 가지를. 형식 매개 변수의 경우, 그것은 단지 마지막으로 수정 될 수 있습니다 및 기타 수정은 컴파일러 오류가 발생합니다. 그러나이 규정에 특정 제한은 정상적인 상황이를 사용하지 않는에서 그들이, 방법의 매개 변수에 수정을 할 수없는,가, 클래스 내의 유일한 방법은 방법의 최종 형식 매개 변수로 수정됩니다.

일부는 휘발성에 주목한다 :

휘발성 역할 :

  1) 명령 재배치 금지 : 변수의 타입은 휘발성으로 선언 다른 스레드에 대한 갱신 통지 변수를 위해,이 변수를 알 컴파일러 런타임은 공유되고 따라서 변수 없습니다 다른 메모리 동작으로 작동 재정렬. 그러나,이 때문에, 매우 휘발성 변수 동기 키워드보다 경량 동기화 메커니즘은, 실행 스레드가 차단하지 않는 휘발성 변수에 액세스 할 때 잠금 동작을 수행하지 않는다.

  변수의 스레드 수정 값이 가변 인 동작에 다른 스레드가 새로운 값이 다른 스레드에 즉시 볼 때 2) 시인성을 보장한다.

  3)) 자성 (스레드 안전을 보장하지 않습니다

비교 및 휘발성 키워드를 동기화 :

  1) 휘발성 키워드는 휘발성이 매우 성능이 더 나은 동기화 된 키워드에 비해 확실히, 스레드 동기화의 경량 구현입니다. 그러나 휘발성 키워드는 변수에 사용할 수있는이 방법 동기화 된 키워드와 코드 블록을 수정할 수 있습니다. 효율성이 크게 얻을 줄이기 위해 주로 실시 동기화 된 키워드 후 개선되었습니다 및 성능을 가지고 출시 잠금 오버 헤드 JavaSE1.6, 실제 개발 후 바이어스 잠금 및 경량 잠금 및 기타 다양한 최적화에 의해 소개 키워드 동기화 장면 이상을 사용하십시오.
  2) 멀티 - 스레드 액세스 휘발성 키워드 블로킹 (시인성)이 발생되지 않으며 발생 키워드 synchronized 블록있다.
  3) 휘발성 질서, 시인성을 확보,이 세 가지 속성이)을 보장하기 위해 자성 (동기화를 보장 할 수 없습니다.
  4) 휘발성 키워드는 주로 복수의 스레드 간의 변수의 가시성을 해결하기 위해 사용되며, 동기화 키워드 액세스 동기화에 여러 스레드간에 자원을 해결된다.

추천

출처www.cnblogs.com/yangrongkuan/p/12024763.html