过程与线程:

过程:能够简略了解为运行中的程序。    过程特点:线程:过程中的程序执行流。       过程特点:    

线程六大状态:
NEW、RUNNABLE、BLOCK、WAITING、TIMED_WAITING、TERMINATED

线程状态间的关系:

  1. 当应用extend Thread、implement Runnable、implement Callable<Object> 等形式new一个新的线程类时,该线程类对应的线程状态即为NEW。
  2. 当执行run()办法时,线程状态从NEW变为RUNNABLE
  3. 如果执行了wait() join()等办法被动暂停了线程,线程进入WAITING状态,进入该状态不开释占用的锁。
  4. 如果执行了带超时工夫的waitsleepjoin办法被动暂停了线程,线程进入TIMED_WAITING状态,进入该状态同样不开释占用的锁。
  5. 如果线程运行到synchronized润饰的代码段或者应用Lock类进行加锁的代码时,如果无奈获取到锁,即进入BLOCK状态
  6. 如果线程在BLOCK状态下获取到锁、如果线程在WAITING状态下被被动唤醒、如果线程在TIMED_WAITING状态下被被动唤醒或者超时工夫到,即进入RUNNABLE状态。
  7. 当线程运行结束或者遇到意外退出时,状态变为TERMINATED
  8. 学习操作系统时,会有READY和RUNNING这两个概念,其实应该是针对过程的说法,因为线程外部每次运行工夫都特地短,READY与RUNNING切换特地频繁,没有必要严格继承操作系统那一套状态转移,所以Thread类源码中对此的定义也阐明了:A thread can be in only one state at a given point in time.These states are virtual machine states which do not reflect any operating system thread states.意思是线程状态其实是虚拟机定义的状态,与操作系统thread的状态无关。(参考自 https://www.zhihu.com/question/56494969)