黑马程序员技术交流社区

标题: 帮我解释一下yield是干什么, [打印本页]

作者: 328078121    时间: 2013-8-30 20:04
标题: 帮我解释一下yield是干什么,
本帖最后由 328078121 于 2013-8-30 23:20 编辑

帮我解释一下yield是干什么,据我现在了解的答案是停止当前线程将执行权给同一级线程,等同一级线程全运行完之后在运行,它的作用就是释放执行权,是自己处于冻结状态,请大神们解释一下,一定要带程序,在网上搜出好几种答案,都没实现,因此一定要带代码


作者: 月黑风高    时间: 2013-8-30 20:34
不知道如何使用,是吗?
Thread.yield()
暂停当前正在执行的线程对象,并执行其他线程。
也就是说多个线程中假如其中一个线程执行到了这句代码,它就让出了执行权,等其他的线程执行完毕,自己在执行。
作者: 月黑风高    时间: 2013-8-30 20:35
不知道如何使用,是吗?
Thread.yield()
暂停当前正在执行的线程对象,并执行其他线程。
也就是说多个线程中假如其中一个线程执行到了这句代码,它就让出了执行权,等其他的线程执行完毕,自己在执行。
作者: wumuzhong    时间: 2013-8-30 21:56
package test;
class MyThread implements Runnable{       
        public void run(){       
                for(int i=0;i<5;i++){
                        try{
                                Thread.sleep(500) ;
                        }catch(Exception e){}
                        System.out.println(Thread.currentThread().getName()
                                        + "运行,i = " + i) ;       
                        if(i==2){
                                System.out.print("线程礼让:") ;
                                Thread.currentThread().yield() ;       
                        }
                }
        }
};
public class YieldDemo{
        public static void main(String args[]){
                MyThread my = new MyThread() ;       
                Thread t1 = new Thread(my,"线程A") ;
                Thread t2 = new Thread(my,"线程B") ;
                t1.start() ;
                t2.start() ;
        }
};

作者: hoyouly    时间: 2013-8-30 22:17
yield(): 暂停当前正在执行的线程对象,并执行其他线程。减缓线程的执行频率从而能达到线程都能平均运行的效果




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