필드에 액세스하는 일반적인 방법은 getter와 setter를 동기화하는 것입니다. 이 액세스는 스레드로부터 안전 만드는 안전한 방법 인 반면, 그것도 한 번에 한 스레드 만 foo
을 읽을 수있는 알, 이제동기화 된 getter/setter에 대해 여러 번 가져 오기 허용
private int foo = 0;
public synchronized int get(){return this.foo;}
public synchronized void set(int bar){ this.foo = bar;}
: int 형과 간단한 예는 다음과 같다 것이다.
많은 스레드가 foo
을 자주 읽으며이 변수를 가끔 업데이트하는 경우 큰 낭비가됩니다. getter는 문제없이 여러 스레드에서 동시에 호출 할 수 있습니다.
이 문제를 해결하는 방법에 대해 알려진 패턴이 있습니까? 아니면 가장 우아한 방법으로이 문제를 해결할 수 있을까요?
고맙다. 귀하의 예제에서 동기화 된 메서드가 잠금의 목적을 물리 치지 않거나 동기화 된 작동 방식을 오해 한 적이 있습니까? – Chippen
@Chippen 맞습니다. 수정자를 삭제하는 것을 잊어 버렸습니다. 내 대답을 업데이트 할게. –