本文主要是介绍Java多线程学习笔记(4)— “Thread类三个方法:线程休眠sleep()、线程礼让yield()、线程强制执行join()”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、线程休眠sleep()
sleep()
- 每个对象都有一把锁,sleep方法不会释放锁
- sleep()方法的参数为需要睡眠的时间,单位:
毫秒
- sleep方法存在异常InterruptedException
- sleep在到达时间后线程进入就绪状态
- sleep可以模拟网络延时,倒计时等
二、线程礼让yield()
yield()
- 礼让线程,让当前正在执行的线程暂停,但不阻塞
- 直接让线程从运行状态转为就绪状态
- 让CPU重新调度,礼让不一定成功,看CPU心情
package book_practice;public class TestYield {public static void main(String[] args) {Myyield m1 = new Myyield("线程1");Myyield m2 = new Myyield("线程2");m1.start();m2.start();}
}class Myyield extends Thread{public void run() {System.out.println(Thread.currentThread().getName()+"-> start");//线程礼让this.yield();System.out.println(Thread.currentThread().getName()+"-> end");}public Myyield(String name) {// TODO 自动生成的构造函数存根super(name);}
}
运行结果:
- 礼让不成功
- 礼让成功
三、线程强制执行join()
join()
- join合并线程,待此线程执行完成后,再执行其他线程
- 该线程执行过程中,其他线程处于阻塞状态
(阻塞就是代码不往下执行,阻塞解除后,进入就绪状态,等待CPU调度)
- 线程A中使用join(),A阻塞,B执行;B执行结束后,A由阻塞变为就绪状态,等待CPU重新调度
这篇关于Java多线程学习笔记(4)— “Thread类三个方法:线程休眠sleep()、线程礼让yield()、线程强制执行join()”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!