线程的状态(全面)、常见的方法(sleep、yield、join)

本文详细介绍了线程从创建到终止的各种状态,如初始状态、就绪状态、运行状态等,并解析了线程间的切换机制。同时,还介绍了常用的线程控制方法,如sleep、yield及join等静态方法的作用与使用场景。

线程对象被创建,即为初始状态,只在堆中开辟内存,和常规对象一样。线程new出来之后是一个初始状态

调用start()进入就绪状态 ready(),注意这里的线程并没有运行哦

OS选中,获得时间片才会进入运行状态,时间片到期,则回到就绪状态

 

 

在运行状态调用sleep方法,会进入一个限期等待waiting。调用join()方法会进入一个无限期等待

 

 

当线程在运行状态时,调用了synchronized同步方法,没有获得锁的线程就会进入阻塞状态。重新获得锁就会进入就绪状态

jdk1.5之后 就绪状态和运行状态统称为  : runnable状态

总结 : 线程的状态一共有六种: new  runnbale waiting  timed_waiting   blocked  terminated  

 

 

常见的静态方法(使用类名来调用)

public static void sleep(long millis):当前线程主动休眠xx毫秒

注意这个异常是抛不出去的,只能使用try catch

public static void yield() 主动放弃CPU的使用权

当前线程主动放弃时间片,回到就绪状态,竞争下一次时间片

 

public final void join() :允许其他线程加入到当前线程当中

加入当前的运行的线程,被加入的线程会阻塞,不会执行,比如会阻塞主线程的执行

线程加入方法的启动需要使用对象来调用方法

执行的效果就是,加入的线程会一直执行,直到加入的线程执行完毕,才会执行主线程

 

优先级

 

  • 线程对象.setPriority()
  • 线程优先级为1-10,默认为5,优先级越高,表示获取CPU的机会越多

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值