引言,前段時間面試了一波,這個問題常被問到,自己腦子裡面的知識體系比較混亂,回答的不太好,廢話不多說,直接來總結:
一共有六種狀態:分別是初始狀態,就緒狀態,執行中狀態,阻塞狀態,等待狀態,超時狀態,終止狀態。
初始(new):新建立的執行緒物件,此時還沒有呼叫start()方法。
就緒狀態(ready):1. 有資格執行,但是程式還未執行到你。2.呼叫執行緒的start()方法;3.當前執行緒sleep()方法結束,其他執行緒join()結束,等待使用者輸入完畢,某個執行緒拿到物件鎖,這些執行緒將進入就緒狀態;4.當前執行緒的時間片用完了,呼叫當前執行緒的yield()方法,當前執行緒進入就緒狀態;5.鎖池裡的執行緒拿到物件鎖後,進入就緒狀態。
執行中(running):執行緒排程程式從可執行池中選擇乙個執行緒作為當前執行緒時所處的狀態。
阻塞(blocking):執行緒阻塞在進入synchronized關鍵字修飾的方法或**塊(獲取鎖)時的狀態。
等待(waiting):這種狀態下的執行緒不會被分配cpu執行時間,他們要等待別顯示的喚醒,否則無限期等待。
超時等待(timed_waiting):處於這種狀態的執行緒不會被分配cpu執行時間,不過無須無限期等待被其他執行緒顯示地喚醒,在達到一定時間後它們會自動喚醒。
終止(terminated):執行緒run()方法執行完畢,主線程的main()方法執行完畢,幾位終止,執行緒終止後不能復生。
java多執行緒狀態切換
一.執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,執行程式 ...
執行緒狀態及切換(三)
主要是實現執行緒各種執行狀態 執行緒5中執行狀態 new建立完執行緒後執行緒狀態為new runnable r newrunnable catch interruptedexception e thread thread newthread r,執行緒1 system.out.println 新建 ...
Java執行緒 執行緒狀態
執行緒可以建立6狀態 new 新建立 runnable 可執行 blocked 被阻塞 waiting 等待 timed waiting 計時等待 terminated 被終止 1 新建執行緒 2 可執行執行緒 一旦呼叫start 方法,執行緒就處於runnable狀態,但是卻不必保持執行。執行中的...