# yield

package com.mrzhang.javalearn.bingfa.demo_03;

/**
 * yield基本使用(一)
 * <p>
 * 1. 可暂停当前线程执行,允许其他线程执行,该线程仍可以运行,不转为阻塞状态,此时,系统选择其他相同或更高优先级线程执行,若没有,则该线程继续执行
 * 2. 但是JDK官方注释中说,yield有的时候不一定好使
 *
 * @author 91MrZhang on 2020/8/1
 */
public class YieldDemo01 {

    public void m() {
        String threadName = Thread.currentThread().getName();
        System.out.println(threadName + " 开始工作");
        for (int i = 0; i < 30; i++) {
            if (i == 15) {
                System.out.println(threadName + " 开始yield");
                Thread.yield();
            }

            System.out.println(threadName + " 开始输出--->" + i);
        }
        System.out.println(threadName + " 结束工作");
    }

    public static void main(String[] args) {
        YieldDemo01 yd01 = new YieldDemo01();
        new Thread(yd01::m, "线程1").start();
        new Thread(yd01::m, "线程2").start();
    }
}