线程join_实例分析JAVA面试必会知识点 「线程join与 yield」

fba69ce158118cb569c9c8a8e3f7756f.png

目录


JAVA面试必会知识点[基础]

JAVA面试必会知识点「容器部分」

JAVA面试必会知识点「JVM部分」

JAVA面试必会知识点「mysql部分」

JAVA面试必会知识点「反射」

实例分析JAVA面试必会知识点 「多线程-创建线程的方式」

实例分析JAVA面试必会知识点 「多线程的优势与引发的问题」


Thread.join() 与Thread.yield()

  1. Thread.join()

已启动的线程等待线程死亡, 阻塞其他线程.

当线程为未启动状态, 调用此方法无效

2 . Thread.yield()

使当前线程从执行状态(运行状态)变为可执行态(就绪状态)

注意: cpu会从众多的可执行态里优先级高的线程里选择,当前也就是刚刚的那个线程还是有可能会被再次执行到的,yield从未导致线程转到等待/睡眠/阻塞状态。在大多数情况下,yield()将导致线程从运行状态转到可运行状态

实例:

JoinDemo.java

package com.java.thread.demo4;public class JoinDemo {    public static void main(String[] args){        Thread t1 = new Thread( new ThreadTest("t1"));        Thread t2 = new Thread( new ThreadTest("t2"));        t1.start();        try{            t1.join();            //t1.join(2000);        }catch (InterruptedException e){            e.printStackTrace();        }        t2.start();    }}

ThreadTest.java

package com.java.thread.demo4;public class ThreadTest implements Runnable {    String id;    public ThreadTest(String id){        this.id = id;    }    @Override    public void run() {        int i=0;        for(; i<5; i++){            try{                Thread.sleep(1000);            }catch (InterruptedException e){                e.printStackTrace();            }            System.out.println("id= "+id+"  index="+i);        }    }}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值