在学习lock与synchronize的区别时,看到这样一句话:“ lock更灵活,可以自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)”。请问这里:
1.lock的自由定义多把锁的枷锁解锁顺序怎么理解?
2.synchronized要按照先加的后解顺序怎么理解?
谢谢各位!
高洛峰2017-04-18 10:51:35
Lock은 인터페이스이며 가장 일반적으로 사용되는 구현은 ReentrantLock입니다. 그 유연성 중 하나는 공정한 매개변수를 설정할 수 있다는 것입니다.
synchronized 및 fair=false인 ReentrantLock은 잠금 순서를 결정할 수 없습니다. 즉, 스레드 A, B, C는 모두 A에서 처음으로 개체를 잠그고 그 다음 B, 마지막으로 C입니다. 그런 다음 A가 개체의 잠금을 해제하면 B 또는 C가 잠길지 결정할 수 없습니다. 다음 개체.
fair=true ReentrantLock(공정한 잠금)을 사용하면 상황이 결정됩니다. A가 객체의 잠금을 해제하면 B가 C보다 먼저 객체를 잠그려고 시도하므로 B는 다음에 객체를 잠그고 B가 잠금을 해제할 때만 회전합니다. C에게
ringa_lee2017-04-18 10:51:35
으아아아
Lock
의 잠금 및 잠금 해제는 Java 의미 수준에서 구현되며 잠금 간에는 필수 관계가 없습니다
synchronized
잠금 해제는 JVM에 의해 구현됩니다. synchronized
블록을 실행한 후에는 모두 synchronized
의 중첩 순서에 따라 잠금이 해제됩니다.