java - lock与synchronize的解锁顺序问题?
怪我咯
怪我咯 2017-04-18 10:49:35
0
2
758

在学习lock与synchronize的区别时,看到这样一句话:“ lock更灵活,可以自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)”。请问这里:

1.lock的自由定义多把锁的枷锁解锁顺序怎么理解?
2.synchronized要按照先加的后解顺序怎么理解?

谢谢各位!

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(2)
小葫芦

Lock은 인터페이스이며 가장 일반적으로 사용되는 구현은 ReentrantLock입니다. 그 유연성 중 하나는 공정한 매개변수를 설정할 수 있다는 것입니다.

synchronized 및 fair=false인 ReentrantLock은 잠금 순서를 결정할 수 없습니다. 즉, 스레드 A, B, C는 모두 A에서 처음으로 개체를 잠그고 그 다음 B, 마지막으로 C입니다. 그런 다음 A가 개체의 잠금을 해제하면 B 또는 C가 잠길지 결정할 수 없습니다. 다음 개체.

fair=true ReentrantLock(공정한 잠금)을 사용하면 상황이 결정됩니다. A가 객체의 잠금을 해제하면 B가 C보다 먼저 객체를 잠그려고 시도하므로 B는 다음에 객체를 잠그고 B가 잠금을 해제할 때만 회전합니다. C에게

左手右手慢动作

으아아아

Lock의 잠금 및 잠금 해제는 Java 의미 수준에서 구현되며 잠금 간에는 필수 관계가 없습니다

으아아아

synchronized 잠금 해제는 JVM에 의해 구현됩니다. synchronized 블록을 실행한 후에는 모두 synchronized의 중첩 순서에 따라 잠금이 해제됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿