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

解决方案 »

  1.   

    yield()是建议线程调度程序从当前线程中让出CPU时间给别的线程,这是一种总体调度,不是仅仅和某个线程相关的,而是和每个线程都有关。线程和人不一样,不是当前线程让了,别的线程就会来抢,是需要调度程序来调度的。
      

  2.   

    yield 可以认为是让当前线程让出 CPU 资源给别的线程用,那么它应该和所属的线程有关,但却为什么要定义成静态的///////////////////////////////////////////////////////////////////////
    public static void yield()暂停当前正在执行的线程对象,并执行其他线程。
    如果不定义成static,如何执行其他线程????所以要定义成类的方法,就像楼上所说,祈祷调度作用,它不能属于单个线程
      

  3.   

    可以这样打个比方吧?多线程相当于多个人共享使用一个卫生间,但某一确定的时间只能有一个人使用卫生间。
    调用了 yield 是调度者告诉当前正在卫生间方便的那位同志快点搞定,因为别人要用了。这是对全局而言的,是调度程序做的事,而不是正在方便的人自己主动让位出来。
      

  4.   

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

  5.   

    我觉得这也就是一个主动和被动让出CPU的理解问题如果说 yield 方法的意思是当前正在运行的线程主动让出CPU,并且不是被调度程序处理的话,就应该是一般的方法。如果是别的线程请求你让出,则设计成静态方法是合理的。