일시적 객체가 이중 선택 잠금에서 안전합니까?일시적 객체는 이중 선택 잠금에서 안전합니까?
private transient java.lang.ThreadLocal __hashHistory;
public int hashCode() {
if (__hashHistory == null) {
synchronized (this) {
if (__hashHistory == null) {
__hashHistory = new java.lang.ThreadLocal();
}
}
}
개체가 휘발성 일 필요가 있습니까?
과도 변수가 이중 확인 잠금과 어떻게 관련되는지 알지 못합니다. 이중 체크 잠금이 적용된 경우 휘발성 그냥 동기화 된 블록을 구현할 것입니다 오버 헤드를 믿습니다. 그래서 답은 임의의 수식어를 사용하는 개인 변수이면 충분합니다. –
내가 생각했던 이유는 우리의 이전 요새화가 이중 잠금 문제를보고하지 않았기 때문이며,이 코드는 요새화 중에 자리를 잡았다. 그래서 이전 사람이 코드를 강화하기 위해 이중 잠금 문제를 고치지 않고 어떤 이유로 든 문제를 발견했거나 시간에 문제가 있다는 것을 깨닫지 못했습니다./그 요새화가 문제가되었을 때 다시 인식되지 않았습니다 (대략 6 년 전에) 일어났다. – Zibbobz
아마도 transient 키워드가 직렬화를 위해 거기에 배치되었지만 이중 방식 잠금 프로세스에는 영향을 미치지 않습니다. –