gpt4 book ai didi

java - 方法同步

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:03 26 4
gpt4 key购买 nike

当我们声明一个方法同步时,第二个线程如何知道第一个线程使用的同步代码部分已经完成,第二个线程如何使用该同步代码部分?

最佳答案

线程调度器告诉第二个线程。当线程退出同步块(synchronized block)时,事情会按以下顺序发生:

  • 退出的线程释放它的锁。

  • 锁告诉线程调度程序它已被释放。

  • 线程调度程序将等待该锁的线程状态更改为“正在运行”。

  • 正在运行的线程竞相获取锁,其中一个获胜,其余线程继续等待。

调度程序决定运行哪些线程、运行它们的顺序以及何时进行上下文切换,因此它会影响哪个线程获得锁,但它不会直接将锁移交给队列中的下一个线程。 (谁知道呢,也许某些实现确实如此,但一般情况下您不能指望这种行为。)

关于java - 方法同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com