黑马程序员技术交流社区

标题: 关于多线程yield的用法 [打印本页]

作者: 张俊迪    时间: 2013-6-10 18:24
标题: 关于多线程yield的用法
本帖最后由 张俊迪 于 2013-6-10 18:57 编辑

帮我解释一下yield是干什么,据我现在了解的答案是停止当前线程将执行权给同一级线程,等同一级线程全运行完之后在运行,它的作用就是释放执行权,是自己处于冻结状态,请大神们解释一下,一定要带程序,在网上搜出好几种答案,都没实现,因此一定要带代码
作者: 李晓峰    时间: 2013-6-10 18:38
static void yield()
          暂停当前正在执行的线程对象,并执行其他线程。
eg:
class Join implements Runnable
{
     public void run()
     {
          for(int x=0;x<60;x++)
               System.out.println(Thread.currentThread().toString()+"......."+x);
          Thread.yield();//释放当前正在执行的线程的执行权,稍微减缓线程执行的频率。
     }
}

class YieldDemo
{
     public static void main(String[] args)throws InterruptedException
     {
          Join j = new Join();
          Thread t1 = new Thread(j);
          Thread t2 = new Thread(j);
          t1.start();
          t2.start();
          for(int x=0;x<80;x++){}
     }
}



作者: 尹丽峰    时间: 2013-6-10 18:42
是暂停线程
作者: 张俊迪    时间: 2013-6-10 18:57
李晓峰 发表于 2013-6-10 18:38
static void yield()
          暂停当前正在执行的线程对象,并执行其他线程。
eg:

谢谢了,好像知道了
作者: 张俊迪    时间: 2013-6-10 19:00
尹丽峰 发表于 2013-6-10 18:42
是暂停线程

谢谢鼓励!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2