簡體   English   中英

什么是Java線程的生命周期?

[英]What is the LifeCycle of Thread in Java?

在Java中,當我們創建線程對象時

Thread t1 = new Thread(Runnable object);
t1.start();

什么是主題的生命周期的不同階段t1和執行后run()將狀態t1

線程在其生命周期中會經歷各個階段。 例如,線程是先生,啟動,運行然后死亡的。 下圖顯示了線程的完整生命周期。

在此處輸入圖片說明

Java線程上面介紹了上述階段:

New:新線程以新狀態開始其生命周期。 它將保持這種狀態,直到程序啟動線程為止。 它也稱為出生線程。

Runnable :一個剛出生的線程啟動后,該線程進入可運行狀態。 處於此狀態的線程被視為正在執行其任務。

Waiting:有時,當一個線程等待另一個線程執行任務時,一個線程會轉換為等待狀態。只有當另一個線程發出信號等待線程繼續執行時,一個線程才會轉換回可運行狀態。

Timed waiting:可運行線程可以在指定的時間間隔內進入定時等待狀態。 當該時間間隔到期或發生等待事件時,處於此狀態的線程將轉換回可運行狀態。

Terminated ( Dead ) :可運行線程在完成其任務或終止時進入終止狀態。

來源: http//www.tutorialspoint.com/java/java_multithreading.htm

線程可以處於以下狀態之一

NEW :尚未啟動的線程處於此狀態。

RUNNABLE :在Java虛擬機中執行的線程處於此狀態。

BLOCKED:處於阻塞狀態的線程正在等待監視器鎖定,以在輸入Object.wait之后輸入同步塊/方法或重新輸入synchronized塊/方法。

WAITING:無限期等待另一個線程執行特定操作的線程處於此狀態。

由於調用以下方法之一,線程處於等待狀態:

Object.wait with no timeout
Thread.join with no timeout
LockSupport.park

TIMED_WAITING:正在等待另一個線程執行操作的線程最多達到指定的等待時間,該線程處於此狀態。

由於以指定的正等待時間調用以下方法之一,因此線程處於定時等待狀態:

Thread.sleep
Object.wait with timeout
Thread.join with timeout
LockSupport.parkNanos
LockSupport.parkUntil

TERMINATED:退出的線程處於此狀態。

請參閱pramodbablad的本文以了解此圖中的各種狀態

在此處輸入圖片說明

在上圖中,除了RUNNING (已顯示為圓圈)之外,所有其他矩形塊均表示各種thread states

線程狀態:

  1. 新建-已創建但未執行
  2. 可運行-正在運行
  3. 已終止-運行方法范圍已結束。

線程也可以具有等待,定時等待和阻塞狀態

有關更多信息,請參見此處: https : //docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM