前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java中什么是Yield给出一个例子

java中什么是Yield给出一个例子

作者头像
马克java社区
修改2021-04-20 10:15:07
2710
修改2021-04-20 10:15:07
举报
文章被收录于专栏:java大数据

iiiii)Yield的用法

马克-to-win:yield英文是屈服投降的意思。 当前线程投降就是当前线程希望释放CPU的自己的占用权,( 但系统可以忽略它这个请求。)参见: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#yield%28%29 其中有这么句话: A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.这样的话当前线程yield时,有时虽然它自己想让别的线程执行,但系统出于优化考虑,可能还是会让当前的线程继续执行。这样的话,yield就会有一种不可控的效果,所以并行编程的最佳实践建议少用yield。

例:1.5.5

class ThreadMark_to_win extends Thread {

    private String s;

    public ThreadMark_to_win(String s) {

        this.s = s;

    }

    public void run() {

        for (int i = 0; i < 10; i++) {

            try {

                Thread.sleep(100);

            } catch (InterruptedException e) {

            }

            System.out.println(s);

/*当前线程希望释放CPU的自己的占用权,( 但系统可以忽略。) */            

            Thread.yield();

        }

    }

}

public class Test {

    public static void main(String[] args) {

        Thread t1 = new ThreadMark_to_win("线程1");

        Thread t2 = new ThreadMark_to_win("线程2");

        t1.start();

        t2.start();

    }

}

更多请见:https://blog.csdn.net/qq_44639795/article/details/103096560

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档