写点什么

改变线程状态的方法

作者:周杰伦本人
  • 2022-10-18
    贵州
  • 本文字数:663 字

    阅读完需:约 1 分钟

改变线程状态的方法


在说线程的基本方法之前,我们先介绍一下线程的生命周期,也就是线程的几个状态,线程有新建、就绪、运行、阻塞和死亡。

start 方法

调用 new 方法会创建一个线程,这时候的线程处于新建状态,当调用 start 方法的时候,线程处于就绪状态。


start 方法和 run 方法 的区别在于 start 方法让新建的线程进入就绪状态,而 run 方法中是需要执行的线程的代码,当调用 run 方法的时候,线程就是运行的状态,run 方法执行完成后,线程会被终止,CPU 对其他线程进行调度。

yield 方法

yield 方法是让当前线程释放 CPU,和其他线程一起竞争时间片,它让运行态的线程进入就绪状态。

sleep 方法

sleep 方法让线程进入超时等待状态,sleep 方法不会释放当前的锁,它属于 Thread 类

wait 方法

wait 方法让线程进入等待状态,wait 方法被调用后会释放锁,它属于 Object 类,需要等待 notify 来进行唤醒,

notify 方法

notify 方法是唤醒对象监视器等待的线程,有个有多个就随机选择一个。

join 方法

join 方法是让当前线程进入阻塞状态,等其他线程结束后,当前线程再由阻塞进入就绪状态。一般结果的分步计算可以 join 来进行操作

setDaemon 方法

setDaemon 方法定义守护线程,守护线程是 jvm 级别的

Interrupt 方法

interrupt 用于线程的中断,调用这个方法不会立即中断,而是根据中断的标识来判断是否改变线程的状态。通过中断标志位安全终止线程。

总结

这篇文章主要介绍了几个改变线程的方法,start 方法用于启动线程,yield 方法用于让运行的状态变为就绪状态,sleep 方法让线程睡眠,不释放锁,wait 方法同样让线程处于等待状态,释放锁,通过 notify 方法来进行唤醒。还有 join 方法等等。

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2020-02-29 加入

公众号《盼盼小课堂》,多平台优质博主

评论

发布
暂无评论
改变线程状态的方法_10月月更_周杰伦本人_InfoQ写作社区