>  Q&A  >  본문

java - lock与synchronize的解锁顺序问题?

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

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

谢谢各位!

怪我咯怪我咯2744일 전727

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰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에게

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:51:35

    으아아아

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

    으아아아

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

    회신하다
    0
  • 취소회신하다