Java线程状态
Java线程共有6个状态,在java.lang.Thread.State中明确定义。
线程状态图:
1.NEW 尚未启动的线程的状态
2.Runnable 可运行的线程的状态,包括等待CPU调度和正在运行的线程的状态
3.Blocked 等待监视器锁的阻塞线程的状态,处于synchronized同步代码块或方法中被阻塞
4.Waiting 等待线程的状态。通过下列不带超时的方式:Object.wait、Thread.join、LockSupport.park
处于等待状态的线程正在等待另一个线程执行特定的动作,如一个线程调用了Object.wait(),此时会等待另一个线程调用同一个对象的Object.notify()或Object.notifyAll()
5.Timed Waiting 指定等待时间的等待线程的状态,通过下列带超时的方式:
Thread.sleep、Object.wait、Thread.join、LockSupport.parkNanos、LockSupport.parkUntil
6.Terminated 终止线程的状态。线程正常执行完成或出现异常而终止
线程间通信
要想实现多个线程之间的协同,如:线程执行先后顺序、获取某个线程执行的结果,终止某个线程等,涉及到线程之间的相互通讯,分为下面四类:
- 文件共享
- 网络共享
- 共享变量
- jdk提供的