ModuleNotFoundError: No module named 'xxx'可能的解決方案大全
阿新 • • 發佈:2022-05-13
每一個執行緒都有自己的區域性變量表,程式計數器(指向正在執行的指標命令)以及各自的生命週期。
1.NEW 狀態:相當於一個Java物件,通過start() 方法後進入RUNNABLE狀態.
2.RUNNABLE(可執行狀態): start方法後執行緒不會直接執行,要聽從CPU的排程,這個中間過程就是RUNNABLE狀態
3.RUNNING(執行狀態)狀態:CPU選中了執行緒,執行緒進入RUNNING狀態。
在RUNNING狀態,執行緒的狀態可以發生如下轉換:
4.BLOCKED(阻塞狀態) :
阻塞狀態下的執行緒可以進入到這幾個狀態:
5.TERMINATED 狀態: 終止狀態,執行緒結束,不會切換到其他狀態
直接進入TERMINATED狀態,比如呼叫stop()或者判斷識別符號 | TERMINATED |
進入BLOCKED狀態,比如呼叫了Sleep() 或者 wait() 而加入了 waitSet中 | BLOCKED |
進行阻塞IO操作,比如網路資料讀寫進入了BLOCKED狀態 | BLOCKED |
獲取某個資源鎖,從而加入到該鎖的阻塞佇列中而進入了BLOCKED狀態 | BLOCKED |
CPU放棄執行緒,使執行緒進入到了 RUNNABLE 狀態 | RUNNABLE |
執行緒主動呼叫 yield()方法,放棄CPU的執行權,進入RUNNABLE 狀態 | RUNNABLE |
直接進入TERMINATED狀態,比如呼叫stop()或者意外死亡(JVM Crash) | TERMINATED |
執行緒的阻塞操作結束,比如讀取到了想要的資料位元組進入到RUNNABLE狀態 | RUNNABLE |
sleep() 後執行緒完成了指定狀態的休眠,進入到了RUNNABLE狀態 | RUNNABLE |
wait()中的執行緒被其他執行緒 notify/notifyALL喚醒,進入RUNNABLE狀態 | RUNNABLE |
執行緒 獲取到了某個鎖資源 ,進入到了RUNNABLE狀態 | RUNNABLE |
執行緒在阻塞過程中被打斷,比如其他執行緒呼叫了 interrupt 方法,進入到了RUNNABLE狀態 | RUNNABLE |