多线程012--线程的sleep、wait、join、yield如何使用

1、Sleep:

sleep的作用是让目前正在执行的线程休眠,让CPU去执行其他线程。线程的状态变成阻塞状态。

注意:sleep会发生线程中断异常;sleep不会释放锁。

 

2、Wait:

wait必须先获得对应的锁才能调用,它让线程进入等待状态,释放当前线程持有的锁,线程只有在其他线程调用notify()或notifyAll()时,才可能被重新唤醒,抢夺CPU。

 

3、Join:

join是线程之间协同方式,他的使用场景为:

线程A必须等待线程B执行完毕后才可以执行,那么就在线程A的代码中加入:

ThreadB.join();

就是让线程B抢占资源去执行,此时A处于等待状态。

 

4、Yeild:

yeild让当前线程从运行中状态回到就绪状态,是让出CPU的方式。

它允许具有相同优先级的其他线程可以有机会获得运行的机会。

 

上一篇:大数据之ClickHouse(下)


下一篇:Spark Sql Join操作类型