Java:为什么Thread.sleep()和yield()是静态的?

Raj*_*arg 28 java multithreading

为什么sleep()yield()方法被定义为static方法java.lang.Thread class

Sur*_*tta 35

代码只会在执行时someXThread执行,在这种情况下,告知someYThreadyield将毫无意义.如此以来,唯一值得调用线程yield上是当前线程,它们使该方法static这样你就不会浪费时间去打电话yield其他线程.

  • 其他线程不一定产生 - 如果有多个处理器(核心),则它们可以是活动的.真正的原因是将产量和睡眠应用于其他线程是不可预测和危险的,违反了其他线程的隐私. (14认同)
  • 你更快......;) (6认同)
  • 问题是关于为什么这个方法是静态的?它不是关于访问其他线程.到目前为止这里有一个很好的观点:) (3认同)

Pra*_*kar 14

这是因为无论何时调用这些方法,这些方法都应用于正在运行的同一个线程.你不能告诉另一个线程执行某些操作,sleep()或者wait.所有操作都在当前正在执行的线程上执行.

  • 我认为wait不是静态方法,原因是等待并通知用于两个线程之间通信的方法,而sleep和static在当前线程内部使用. (2认同)

sti*_*ike 6

如果调用yieldor sleep方法,则它适用于当前正在执行的任何线程,而不是任何特定线程 - 您不必指定当前正在运行的线程来释放处理器.

这个论坛中的类似帖子