线程的状态和常用方法

线程的五大状态:
1.新生状态 创建线程对象
2.就绪状态 a.调用start方法
b.阻塞状态解除
c.调用yield方法,让出cpu给同优先级线程,自身进入就绪态
d.JVM本身将cup从本地线程切换到其他线程,自身进入就绪态
3.运行状态 在被cpu调用后,进入运行态
4.阻塞状态 a.调用sleep方法,继续暂用资源
b.调用wait方法,不占用资源
c.调用join方法,插队,等着别的线程运行完,这个也会阻塞(具体为什么插队后变阻塞我还不怎么理解,有大佬明白欢迎留言告诉我)
d.IO操作,比如read,write,必须通过操作系统调用
5.死亡状态 a.线程自己运行完,进入改状态
b.被强制结束 stop方法(不推荐使用)

自己画了张图,有错的话请留言,谢谢
线程的状态和常用方法
操作线程的常用方法:
1.sleep()
使线程休眠一段时间,将处于阻塞状态;
如果调用了sleep方法之后,没有其他等待执行的线程,这个时候线程不会恢复执行,还是在休眠。
2.join()
阻塞指定线程等到另外一个线程完成后继续执行。
3.yield()
让当前正在执行的线程暂停,不是阻塞线程,而是将线程的运行态转入就绪态;
调用了该方法后,如果没有其他线程等待执行,此时当前线程就会马上恢复执行。
4.setDaemon()
可以将指定的线程设置成后台线程,守护线程;
创建用户线程的线程结束时,后台线程也随之消亡;
只能在线程启动之前把它设为后台线程。
5.setPriority(int newPriority) getPriority()
线程的优先级代表的是概率;
范围从1到10,默认为5。
6.stop()
终止线程运行,变为死亡态;
不推荐使用。

后续有增加我再更新,博客内容有错请留言,谢谢。