日期:2014-05-20  浏览次数:20702 次

为什么 Thread.yield 要设计成静态的?
yield   可以认为是让当前线程让出   CPU   资源给别的线程用,那么它应该和所属的线程有关,但却为什么要定义成静态的

------解决方案--------------------
yield()是建议线程调度程序从当前线程中让出CPU时间给别的线程,这是一种总体调度,不是仅仅和某个线程相关的,而是和每个线程都有关。线程和人不一样,不是当前线程让了,别的线程就会来抢,是需要调度程序来调度的。
------解决方案--------------------
yield 可以认为是让当前线程让出 CPU 资源给别的线程用,那么它应该和所属的线程有关,但却为什么要定义成静态的

///////////////////////////////////////////////////////////////////////
public static void yield()暂停当前正在执行的线程对象,并执行其他线程。
如果不定义成static,如何执行其他线程????所以要定义成类的方法,就像楼上所说,祈祷调度作用,它不能属于单个线程

------解决方案--------------------
你调用yield()时候用什么来调用的?当然是你当前运行的程序,只要程序一运行就会产生线程,所以弄个static方法当然不错了,你不必得到当前线程就可以让出控制权,如果不是static那么你还要获取当前线程,用Thread()类接收,然后再次调用yield(),你觉得有必要吗?

这就是static的好处!方便!