자바 스 레 드 동기 화 (2)
2034 단어 자바
(1) volatile: 이 키 워드 는 다른 스 레 드 에 볼 수 있 는 변 수 를 확보 하고 가시 적 인 문 제 를 해결 할 수 있 습 니 다.Counter 류 를 다음 과 같이 수정 하면 원자 문제 가 존재 하지 않 지만 가시 적 인 문제 가 존재 합 니 다.
public class Counter {
private int counter;
public synchronized int getCounter() {
return counter;
}
public synchronized void setCounter(int counter) {
this.counter = counter;
}
}
예 를 들 어 다른 스 레 드 가 setCounter 방법 을 호출 하여 conter 의 값 을 5 로 수정 한 후에 다른 스 레 드 가 getCounter 방법 으로 conter 의 값 을 가 져 오 면 반드시 5 를 가 져 오 는 것 은 아 닙 니 다.그러나 counter 의 성명 에 volatile 키 워드 를 추가 하면 가시 적 인 문 제 를 해결 할 수 있 습 니 다. 한 라인 이 다른 라인 이 상태 에 대한 변 화 를 볼 수 있 도록 확보 할 수 있 습 니 다.
public class Counter {
private volatile int counter;
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
}
(2) final 키워드: 이 키 워드 는 주로 가 변 적 이지 않 은 상 태 를 보조 적 으로 만 드 는 데 사 용 됩 니 다. 대상 이 올 바 르 게 구축 되 었 다 면 (사실 대상 이 어떻게 올 바 르 게 구축 되 었 는 지, 이것 은 복잡 한 주제 입 니 다. 쉽게 말 하면 구조 함수 에서 this 를 다른 스 레 드 에 노출 시 키 지 마 십시오) final 수식 의 키워드 값 은 모든 다른 스 레 드 에 볼 수 있 습 니 다.동시에 한 대상 의 상 태 는 변 하지 않 기 때문에 여러 스 레 드 에서 이 대상 을 사용 하 는 것 도 스 레 드 가 안전 합 니 다.
public class Counter {
private final int counter;
public Counter() {
this.counter = 5;
}
public int getCounter() {
return counter;
}
}
(3) static 키워드, static 수식 변수 나 코드 블록 에 있 는 변 수 를 초기 화하 면 초기 화 끝 날 때 까지 의 작업 상 태 를 확보 할 수 있 습 니 다. 다른 스 레 드 에 대해 서 는 볼 수 있 지만 대상 의 상태 가 달라 질 경우 같은 단계 가 필요 합 니 다.정적 초기 화 는 JVM 이 완 성 된 것 으로 클래스 의 초기 단계, 즉 클래스 가 불 러 온 후 클래스 가 임의의 스 레 드 로 사용 되 기 전에 발생 합 니 다.JVM 은 초기 화 기간 에 자 물 쇠 를 가 져 와 야 합 니 다. 이 자 물 쇠 는 스 레 드 마다 한 번 이상 사용 되 어 하나의 클래스 가 불 러 왔 는 지 확인 합 니 다.이 자 물 쇠 는 정적 초기 화 기간 동안 메모리 에 기 록 된 결 과 를 자동 으로 모든 스 레 드 를 볼 수 있 도록 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.