변수 Lock이라는 예제는 Object Lock이라고 하는 게 더 적절하지 않을까 생각됩니다. 또한 예제에서 불변객체인 Integer를 synchronized 인자로 받게 하셨는데.. 불변객체는 동시성 제어가 필요로 되는 객체가 아니라고 생각합니다. 해당 예제는 실행해보시면 아시겠지만, 동시성 제어가 되지 않습니다. 이유는 동시성 제어 함수에서 불변 객체를 수정하면서 레퍼런스가 바뀌기 때문에 결국엔 동시성 제어가 안됩니다.
해당 예제를 다음처럼 표현하는 건 어떨까요?
변수 Lock -> Object Lock class Count { private Integer count = 0; public Integer view() { synchronized (this) { return this.count++; } } }
댓글
댓글갯수4정리 감사합니다. 잘 읽고 갑니다 ! :D
글 내용이 좋네요 잘봤습니다.
변수 Lock이라는 예제는 Object Lock이라고 하는 게 더 적절하지 않을까 생각됩니다.
또한 예제에서 불변객체인 Integer를 synchronized 인자로 받게 하셨는데.. 불변객체는 동시성 제어가 필요로 되는 객체가 아니라고 생각합니다.
해당 예제는 실행해보시면 아시겠지만, 동시성 제어가 되지 않습니다.
이유는 동시성 제어 함수에서 불변 객체를 수정하면서 레퍼런스가 바뀌기 때문에 결국엔 동시성 제어가 안됩니다.
해당 예제를 다음처럼 표현하는 건 어떨까요?
변수 Lock -> Object Lock
class Count {
private Integer count = 0;
public Integer view() {
synchronized (this) {
return this.count++;
}
}
}
와우 깔끔하고 정확한 정리 감사합니다. 책에도 동일하게 나와있나요?
유익한 글 잘 읽고 갑니다~