
Thread对象被创建,但还未启动
也就是还未调用start方法,一个线程被真的创建,是取决于是否调用了start方法。
线程运行状态
Thread对象被创建,并且调用了start方法
(就绪)Ready状态,假设cpu一次只可跑一个线程,一次执行区间,两个线程抢这个cpu,那么没抢到cpu的那个线程就是Ready状态,抢到的那个就是Running状态
线程结束状态,线程所要执行的任务结束了
start方法执行结束
线程等待状态
调用了wait,join的无参方法
线程超时等待状态
调用了sleep,join(带时间参),wait(带时间参)的方法,调用有关时间的方法都会进入这个状态
线程阻塞状态
这里涉及到线程锁
假设几个线程抢一把锁,没抢到的线程便会进入阻塞状态,直到抢到为止。
如果不清楚锁是什么,就可以这么理解:
假如cpu是马桶,那么锁就是厕所的门,把线程比作人,每个人想在马桶上执行,就得抢这个门(上厕所不得锁门不是嘛),那么抢到这个门之后就把他锁上,这是其他人就进入了阻塞状态,直到抢到这个门为止。
当然这些状态的转换还存在一些其他的方法,不过我对那些方法还不是很了解,就不罗列出来了。