改变线程状态的方法

举报
周杰伦本人 发表于 2022/07/27 11:01:18 2022/07/27
974 0 0
【摘要】 改变线程状态的方法在说线程的基本方法之前,我们先介绍一下线程的生命周期,也就是线程的几个状态,线程有新建、就绪、运行、阻塞和死亡。 start方法调用new方法会创建一个线程,这时候的线程处于新建状态,当调用start方法的时候,线程处于就绪状态。start方法和run方法 的区别在于start方法让新建的线程进入就绪状态,而run方法中是需要执行的线程的代码,当调用run方法的时候,线程...

改变线程状态的方法

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

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方法等等。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。