编程语言
首页 > 编程语言> > Java:线程礼让yield

Java:线程礼让yield

作者:互联网


例如:A线程、B线程在就绪状态同时竞争,CPU调度,让A线程先进入运行状态,但A线程礼让了,重新回到就绪状态,跟B线程再竞争一次。

package com.jiemyx.thread.demo02;

//测试礼让线程
//礼让不一定成功,看CPU心情
public class ThreadYield {
    public static void main(String[] args) {
        MyYieldA a = new MyYieldA();
        MyYieldB b = new MyYieldB();

        new Thread(a,"A线程").start();
        new Thread(b,"B线程").start();
    }
}

class MyYieldA implements Runnable{
    @Override
    public void run() {
        //Thread.currentThread().getName()获取线程的名字
        System.out.println(Thread.currentThread().getName() + "线程开始执行");
        Thread.yield(); //礼让
        System.out.println(Thread.currentThread().getName() + "线程停止执行");
    }
}

class MyYieldB implements Runnable{
    @Override
    public void run() {
        //Thread.currentThread().getName()获取线程的名字
        System.out.println(Thread.currentThread().getName() + "线程开始执行");
        System.out.println(Thread.currentThread().getName() + "线程停止执行");
    }
}

运行结果(礼让成功):

A线程线程开始执行
B线程线程开始执行
B线程线程停止执行
A线程线程停止执行


运行结果(礼让失败):

A线程线程开始执行
A线程线程停止执行
B线程线程开始执行
B线程线程停止执行


可能出现(这是因为线程之间是同时进行的,这里是B线程先运行)

B线程线程开始执行
B线程线程停止执行
A线程线程开始执行
A线程线程停止执行

标签:Java,currentThread,Thread,getName,yield,线程,执行,礼让
来源: https://www.cnblogs.com/Jiemyx/p/14778661.html