Java 产量法混乱

Java 产量法混乱,java,concurrency,Java,Concurrency,我有点困惑。我在某处读到Thread.yield()方法导致当前运行的线程暂停,并给剩余的“相同优先级”线程提供机会 现在总是执行相同优先级的线程,或者也可以执行更高优先级的线程。如果假设当前运行的线程在某个对象上有一些锁,那么在执行yeild方法之后,它是否会给出它的锁?当您调用thread.yield()时,当前线程暂停并允许调度程序运行另一个线程。优先级由调度程序管理 当然不是,你不会释放任何锁。这样做会中断同步。当您调用Thread.yield()时,当前线程暂停并允许调度程序运行其他线

我有点困惑。我在某处读到
Thread.yield()
方法导致当前运行的线程暂停,并给剩余的“相同优先级”线程提供机会


现在总是执行相同优先级的线程,或者也可以执行更高优先级的线程。如果假设当前运行的线程在某个对象上有一些锁,那么在执行yeild方法之后,它是否会给出它的锁?

当您调用
thread.yield()
时,当前线程暂停并允许调度程序运行另一个线程。优先级由调度程序管理


当然不是,你不会释放任何锁。这样做会中断同步。

当您调用
Thread.yield()
时,当前线程暂停并允许调度程序运行其他线程。优先级由调度程序管理


当然不是,你不会释放任何锁。这样做会破坏同步。

好的,我明白你的意思了。但我想,当当前线程暂停,而其他线程有机会执行时,该线程的优先级是多少。更高或与暂停的线程相同。您不知道也无法预测它,这是计划程序的工作。您通常不必调用yield
thread。yield
是操作系统定义的行为的定义。使用它可以带来一些漂亮的。。有趣的结果。有人会认为,生成一个线程会向调度程序表明该线程没有任何重要的工作要做,从而降低其优先级,对吗?有些Solaris(我想?)做的恰恰相反,并且增加了线程优先级。我相信这是一个暗示,而不是一个义务。我明白你的意思了。但我想,当当前线程暂停,而其他线程有机会执行时,该线程的优先级是多少。更高或与暂停的线程相同。您不知道也无法预测它,这是计划程序的工作。您通常不必调用yield
thread。yield
是操作系统定义的行为的定义。使用它可以带来一些漂亮的。。有趣的结果。有人会认为,生成一个线程会向调度程序表明该线程没有任何重要的工作要做,从而降低其优先级,对吗?有些Solaris(我想?)做的恰恰相反,它提高了线程的优先级。我相信这是一个暗示,而不是义务