乐趣区

关于java:Java-多线程-知识点汇总完善中

过程与线程:

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

线程六大状态:
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)
退出移动版