美文网首页Java
java 并发 yield()方法-线程让步

java 并发 yield()方法-线程让步

作者: 静享时光 | 来源:发表于2020-05-09 00:27 被阅读0次

线程让步。Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程。
但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中。

我们看看使用示例:

class MyThread8One extends Thread {
    private int countOne = 10;

    @Override
    public void run() {
        while (countOne-- > 0) {
            PrintUtils.print("MyThread8One   =================== count: " + countOne);
            Thread.yield();
        }
    }
}

class MyThread8Two extends Thread {
    private int countTwo = 10;

    @Override
    public void run() {
        while (countTwo-- > 0) {
            PrintUtils.print("MyThread8Two count: " + countTwo);
        }
    }
}


public class ThreadTest8 {

    public static void main(String[] args) {
        MyThread8One myThread8One = new MyThread8One();
        MyThread8Two myThread8Two = new MyThread8Two();
        myThread8One.start();
        myThread8Two.start();
    }

    /**
     *
     * MyThread8Two count: 9
     * MyThread8One   =================== count: 9
     * MyThread8Two count: 8
     * MyThread8One   =================== count: 8
     * MyThread8Two count: 7
     * MyThread8One   =================== count: 7
     * MyThread8One   =================== count: 6
     * MyThread8Two count: 6
     * MyThread8One   =================== count: 5
     * MyThread8One   =================== count: 4
     * MyThread8One   =================== count: 3
     * MyThread8Two count: 5
     * MyThread8One   =================== count: 2
     * MyThread8Two count: 4
     * MyThread8One   =================== count: 1
     * MyThread8Two count: 3
     * MyThread8One   =================== count: 0
     * MyThread8Two count: 2
     * MyThread8Two count: 1
     * MyThread8Two count: 0
     *
     * Process finished with exit code 0
     */
}

由结果可以看出来,虽然执行了Thread. yield()方法,但是Thread8One并没有让出执行权,让Thread8Two先执行。也就是我们前面说的,yield()方法并一定能是线程让步成功。因为让步的线程还有可能被线程调度程序再次选中而继续执行。

相关文章

网友评论

    本文标题:java 并发 yield()方法-线程让步

    本文链接:https://www.haomeiwen.com/subject/wuwcnhtx.html