허용 답변 방지 대칭 특성 등에 의해 지적 보유 답변, 의견과 jls-17.4.2이 발생합니까?
1)보고 후 - user3707125
2) 잠금 장치 사이의 HB 관계는, 잠금 해제 및 HB 잠금 (UL 사이에 실제로 l) hb (l, ul)과 같지 않음. JSL에서 shmosel
- -에 의해 암시
는 모니터가 발생-이전에 그 모니터의 모든 후속 잠금 해제. 제임스 대형하여 HB의
3) 합리적인 설명
실제 질문을했다 : 자바 메모리 모델 (JMM)이 설명
여러 행동 사이의 관계 이전에 발생. "x"와 "y"가 그들 사이에 h (x, y) 관계를 갖는 두 개의 액션 인 경우. JMM은 또한 "x"와 "y"를 순차적으로 실행하는 것과 동일한 결과를 얻는다면 구현 (컴파일러, 런타임 또는 하드웨어)이 자유롭게 이러한 실행을 다시 지정할 수 있다고 명시합니다.
그래서 내가 바로 그
hb(x,y) != hb(y,x)
암 I 생각? 또는 나는 무엇인가 놓쳤 느냐?
업데이트 :
또한 잠금을 포함하는 동작에 대해 어떻게 hb 관계를 설정할 수 있습니까? 서로 다른 스레드에 의한 잠금 이벤트는 프로그램 순서에 의해 정의 될 수 없으며 결정적이지 못하며 명령 및 스케줄러와 같은 여러 요소에 따라 달라집니다.
그래서 두 잠금 동작 사이 - l1과 l2 관계 hb 정의 방법 (l1, l2) 또는 hb (l2, l1)로 표시된다. 둘 다 받아 들일 수 있습니다. 이 경우 둘 다 평등 해 보입니다.
l1과 l2는 동일한 개체에 대한 잠금 작업입니다. L1과 L2는 잠금
(주석 기준) 명확화 없습니다 : 다른 스레드가 동일한 개체에서 수행하는 것입니다 잠금 때 잠금 조치를 확실히 상호 배타적입니다.
https://en.wikipedia.org/wiki/Happened-before - "모든 엄격한 부분 명령과 마찬가지로 일어난 관계는 전이적이고 비관적이며 ** 반대로 **" – user3707125
왜 동일할까요? * x *가 * y *보다 먼저 발생하면 분명히 * y *는 * x * 앞에 나오지 않습니다. – shmosel
나는 일반적인 의미로 위키에서 지적한대로 둘 다 옳다는 것을 알 수있다. - hb는 반 비대칭이다.그러나 일반적으로 많은 경우와 JMM 작업에서 차이점이 없으며 잠금 장치는 동작으로 간주됩니다. 자물쇠 사이에는 관계가 성립되지만 질서는 성립하지 않습니다. 희망을 갖고 나는 옳다. – samshers