可以很容易地说Occam的Razor削减了另一种方式。假定大多数情况下,基于Java的JDK的JVM的正常/预期实现都是将Java“线程”绑定到本机线程上,并且使线程处于休眠状态是基础平台的基本功能。如果无论如何线程代码都是本地的,为什么还要在Java中重新实现它?最简单的解决方案是使用已经存在的功能。
其他一些注意事项:在现代JVM中,无争议的同步可以忽略不计,但并非总是如此。过去,获取该对象监视器是一项相当“昂贵”的操作。
如果在Java代码中实现线程休眠,并且实现方式也未绑定到本机线程等待,则操作系统必须继续调度该线程,以便运行检查是否需要唤醒的代码。正如注释中所散列的那样,对于现代JVM上的示例而言,这显然不是正确的,但是很难说1)首次以这种方式指定Thread类时可能已经存在并期望发生什么。2)如果该断言适用于每个平台,则可能有人曾经想在其上实现JVM。



