1、新建
new Thread()即创建了一个线程对象。
2、就绪
调用线程的start()方法,线程进入就绪状态,此时就等待CPU调度,分配时间片执行了。
3、运用
CPU分配时间片给线程执行后,线程就变成了执行状态。
4、阻塞
阻塞分为下面三种情况:
sleep(long time)、t.join():这两种阻塞不会释放对象锁,sleep时间到、t线程执行完,线程回到就绪状态,等待CPU调度。
wait():这种阻塞会释放对象锁,并且会一直等到调用了notify、notifyAll方法后才会被唤醒,唤醒后进入阻塞队列中争抢对象锁,抢到对象锁之后进入就绪状态等待CPU调度。
synchronized:这种阻塞线程会直接进入阻塞队列中争抢对象锁,抢到对象锁之后进入就绪状态等待CPU调度。
5、死亡
当线程的run方法执行完,或者线程因异常跳出了run方法,那么线程的生命就结束了。