Java Thread.yield()对于良好的编码实践是否有用?

Java Thread.yield()对于良好的编码实践是否有用?,java,multithreading,Java,Multithreading,Thread.yield是否保证线程会一直等待其他线程的执行?Thread.yield是大约三十年前的遗物,当时线程是在单CPU计算机上实现的,操作系统不支持,采用一种称为协作多任务的技术 在那些日子里,线程运行的唯一方式是其他线程通过调用线程库中的函数来产生CPU。通常情况下,这会发生在一个线程需要等待某件事情的时候,所以很自然,这是让其他线程运行的好时机 yield调用是针对一个特殊情况的,其中一个线程正在进行长时间的计算,它不想等待任何东西。程序员会在算法中的关键位置进行一些yield调用

Thread.yield是否保证线程会一直等待其他线程的执行?

Thread.yield是大约三十年前的遗物,当时线程是在单CPU计算机上实现的,操作系统不支持,采用一种称为协作多任务的技术

在那些日子里,线程运行的唯一方式是其他线程通过调用线程库中的函数来产生CPU。通常情况下,这会发生在一个线程需要等待某件事情的时候,所以很自然,这是让其他线程运行的好时机

yield调用是针对一个特殊情况的,其中一个线程正在进行长时间的计算,它不想等待任何东西。程序员会在算法中的关键位置进行一些yield调用,以确保其他线程能够及时响应事件

让我再说一遍,因为这很重要:线程会在不想等待的点调用yield


从那时起,几乎每一个线程库中都存在某种形式的收益,但它不再有任何用途,除非您将实现最低级别的同步原语作为学习练习。

您的问题是什么?文档回答了这一点:@SpringLearner,我同意这是一个非常弱的问题,但我不认为他在问Thread.yield是否与Thread.sleep0的意思相同。我问的问题是,Thread.yield为什么存在?我应该什么时候打电话?看来我的答案是OP想要听到的。