Андрей Козицкий Asked:2020-09-23 06:16:44 +0000 UTC2020-09-23 06:16:44 +0000 UTC 2020-09-23 06:16:44 +0000 UTC sleep() 是否比 yeld() 好,如果是,为什么? 772 什么Thread.sleep(1)更好Thread.yeld()? java 2 个回答 Voted Best Answer Sergey Gornostaev 2020-09-23T11:43:49Z2020-09-23T11:43:49Z 给出这个建议的人表面上理解了这个问题。或者根本不明白。比较这些方法并不完全正确,它们有不同的目的。 Thread.sleep()在参数中指定的毫秒数内停止线程。如果没有其他线程准备好运行,处理器将处于空闲状态。 Thread.yield()声明线程的意图是将执行让给其他线程。如果还有其他线程准备运行,则执行上下文将切换到其中之一。如果不是,则当前线程将继续执行。 重要的是要了解调用时间Thread.yield()可以以纳秒为单位测量,而它Thread.sleep(1)会停止线程一毫秒。也就是说,如果代码的逻辑是在线程之间切换,您可以将程序减慢数十万倍。另一方面,如果逻辑只是在预期中,那么Thread.yield()它根本不会给出任何东西。 Ростислав Красный 2020-09-23T06:54:20Z2020-09-23T06:54:20Z 没有,Thread.sleep(1)没有更好Thread.yeld()。
给出这个建议的人表面上理解了这个问题。或者根本不明白。比较这些方法并不完全正确,它们有不同的目的。
重要的是要了解调用时间
Thread.yield()可以以纳秒为单位测量,而它Thread.sleep(1)会停止线程一毫秒。也就是说,如果代码的逻辑是在线程之间切换,您可以将程序减慢数十万倍。另一方面,如果逻辑只是在预期中,那么Thread.yield()它根本不会给出任何东西。没有,
Thread.sleep(1)没有更好Thread.yeld()。