在并发编程中,使用多线程则是一个程序员必备的技能之一,那么今天总结下线程的状态有哪些,以及怎样转换的。
java定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,5中状态如下:
- 新建(New):创建线程后尚未启动的线程。
- 运行(Runnable):包括了OS线程状态中的Running和Ready,即该状态下线程可能正在运行,也可能在等待cpu的为他分配时间。
- 无限期等待(Waiting):该状态下线程不会被cpu分配时间,他们要等待其他的线程显示的唤醒,Object.wait()方法;Thread.join()方法都会使得线程处于该状态
限期等待(Timed Waiting):该状态下线程不会被cpu分配时间,不需要等待被其他线程显示的唤醒,在一定时间后会有系统自动唤醒,下面方法让线程处于该状太;
Thread.sleep(mills),Thread.join(mills),Object.wait(mills)阻塞(Blocked);在等待获得一个排它锁,等待其他线程释放同一个对象的锁
- 结束(Terminated):线程已终止,线程结束