Java教程

【狂神说Java】线程礼让,线程插队

本文主要是介绍【狂神说Java】线程礼让,线程插队,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

yield方法

  • 礼让线程,让当前正在执行的线程暂停,但不阻塞
  • 将线程从运行状态转为就绪状态
  • 让cpu重新调度,礼让不一定成功。
public class TestYield {
    public static void main(String[] args) {
        new Thread(new MyYield1(), "A").start();
        new Thread(new MyYield2(), "B").start();

    }
}

class MyYield1 implements Runnable {
    @Override
    public void run() {
        System.out.println("开始A");
        Thread.yield();// 暂停,让cpu重新调度
        System.out.println("结束A");
    }
}

class MyYield2 implements Runnable {
    @Override
    public void run() {
        System.out.println("开始B");
        System.out.println("结束B");
    }
}

join方法

  • join合并线程,待此线程执行完成后,再执行其他线程(执行时,其他线程阻塞)
public class JoinTest {
    public static void main(String[] args) {
        Thread thread = new Thread(new MyJoin(),"a");
        thread.start(); // 线程启动
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName()+"--> 第" +i);
            if (i == 5){// main线程中断,a线程介入
                try {
                    thread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

class MyJoin implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName()+"-->Join, 第"+i);
        }
    }
}

执行结果如图:

这篇关于【狂神说Java】线程礼让,线程插队的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!