java线程学习之五大状态和常用的方法

线程五大状态及其转换

线程的五大状态分别为:创建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)。
在这里插入图片描述

新建状态(New):即单纯地创建一个线程、
就绪状态(Runnable):在创建了线程之后,调用Thread类的start()方法来启动一个线程,即表示线程进入就绪状态!
运行状态(Running):当线程获得CPU时间,线程才从就绪状态进入到运行状态!
阻塞状态(Blocked):线程进入运行状态后,可能由于多种原因让线程进入阻塞状态,如:调用sleep()方法让线程睡眠,调用wait()方法让线程等待,调用join()方法、阻塞式IO方法。
死亡状态:run()方法的正常退出就让线程进入到死亡状态,还有当一个异常未被捕获而终止了run()方法的执行也将进入到死亡状态!

控制线程方法的介绍

Sleep()方法

  • Sleep线程休眠:指的是让线程暂缓执行,等到预计时间之后再恢复执行。 线程休眠会交出CPU,让CPU去执行其他的任务。

  • 调用sleep()方法让线程进入休眠状态后,sleep()方法并不会释放锁,即当前线程持有某个对象锁时,即使调用sleep()方法其他线程也无法访问这个对象。

  • 调用sleep()方法让线程从运行状态转换为阻塞状态;sleep()方法调用结束后,线程从阻塞状态转换为可执行状态。

Yield()方法

  • 线程让步:暂停当前正在执行的线程对象,并执行其他线程。 调用yield()方法让当前线程交出CPU权限,让CPU去执行其他线程。
  • yield()方法和sleep()方法类似,不会释放锁,但yield()方法不能控制具体交出CPU的时间。
  • yield()方法只能让拥有相同优先级的线程获取CPU执行的机会。
  • 使用yield()方法不会让线程进入阻塞状态,而是让线程从运行状态转换为就绪状态,只需要等待重新获取CPU执行的机会。

Join()方法

插队线程:指的是如果在主线程中调用该方法时就会让主线程休眠,让调用join()方法的线程先执行完毕后再开始执行主线程。

线程停止的方式

  • 设置标志位,让线程停止
  • 用Stop()方法强制停止,不安全,不建议使用
  • 使用Thread类的interrupt()方法中断线程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值