Tread 的 yield 方法

一 点睛

yiled 方法属于一种启发式的方法,它会提醒调度器我愿意放弃当前的 CPU 自由,如果 CPU 的资源不紧张,则会忽略这种提醒。

调用 yield 方法会使当前线程从 RUNNING 状态切换到 RUNNABLE 状态,一般这个方法不太常用。

二 实战

1 代码 

package concurrent;

import java.util.stream.IntStream;

public class ThreadYield {
    public static void main(String[] args) {
        IntStream.range(0, 2).mapToObj(ThreadYield::create).forEach(Thread::start);
    }


    private static Thread create(int index) {
        return new Thread(() -> {
//            if (index == 0) {
//                Thread.yield();
//            }
            System.out.println(index);
        });
    }
}

2 测试

上面的程序运行很多次,会发现输出结果不一致,有时候是打印0,有时候是打印1。

打开注释后再运行,会发现输出结果还是不一致,有时候是打印0,有时候是打印1。

3 说明 

一般情况下,因为第一个线程如果先获得了 CPU 资源,它会比较谦虚,主动告诉 CPU 调度器释放原本属于自己的资源,但是 yield 只是一个提示( hint &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值