新生
使用new关键字创建一个线程类的时候,就处于新生状态
就绪
线程对象调用start()方法时,该线程就处于就绪状态,线程获得cpu执行权,获取处理器资源,等待执行
运行
线程的启动是调用start()方法而不是run()方法,记住永远不要调用run()方法,因为系统会把线程对象当成普通对象,run()方法也将变成一个普通方法去执行
假如你直接调用了run()方法,不能直接通过this.getname()方法获得线程名,此时获取的是对象名,因为此时已经没有了线程体,线程对象变成了普通对象,要通过thread.currentThread().getName获取
运行的时候如果突然失去了处理器cpu的资源会回到就绪状态
阻塞
线程在调用sleep()方法,遇到IO阻塞,等待同步锁,等待通知的时候会遇到阻塞情况,都是得值线程阻塞的多重原因
在调用sleep()方法时发生了阻塞,会释放资源回到就绪状态
死亡
线程和人一样,也会生老病死,它完成了她的任务或者发生了突发的情况也会突然死去; 1,线程正常结束
2,线程抛出一个未捕获的异常或者error,如图
3,线程对象只能调用一次start()方法,只能在新生状态下使用,否则也会抛异常
注意
线程在运行状态发生阻塞进入阻塞状态或者失去了cpu的分配的资源,都会进入就绪状态,等待重新分配资源