A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 328078121 中级黑马   /  2013-8-30 20:04  /  1362 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 328078121 于 2013-8-30 23:20 编辑

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

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

4 个回复

倒序浏览
不知道如何使用,是吗?
Thread.yield()
暂停当前正在执行的线程对象,并执行其他线程。
也就是说多个线程中假如其中一个线程执行到了这句代码,它就让出了执行权,等其他的线程执行完毕,自己在执行。
回复 使用道具 举报
不知道如何使用,是吗?
Thread.yield()
暂停当前正在执行的线程对象,并执行其他线程。
也就是说多个线程中假如其中一个线程执行到了这句代码,它就让出了执行权,等其他的线程执行完毕,自己在执行。

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

回复 使用道具 举报
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() ;
        }
};

评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1 不想写注释吗

查看全部评分

回复 使用道具 举报
yield(): 暂停当前正在执行的线程对象,并执行其他线程。减缓线程的执行频率从而能达到线程都能平均运行的效果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马