歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中線程的生命周期

Java中線程的生命周期

日期:2017/4/19 14:16:58   编辑:Linux編程

首先簡單的介紹一下線程:

進程:正在運行中的程序。其實進程就是一個應用程序運行時的內存分配空間。

線程:其實就是進程中的一條執行路徑。進程負責的是應用程序的空間的標示。線程負責的是應用程序的執行順序。

線程的生命周期:

一般來說線程狀態有一下幾種:

①新建:

創建線程對象。

②就緒:

start方法被調用,線程獲得了執行資格,但還沒有執行權。

(隨機性的原理:因為cpu的快速切換造成,哪個線程獲取到了cpu的執行權,哪個線程就執行。)

③運行:

線程獲得了CPU的執行權,此狀態有執行資格也有執行權。

④阻塞:

由於一些操作讓線程處於了該狀態,沒有了執行資格,也沒有了執行權。而另一些操作又可以將線程激活,激活後處於就緒狀態。

⑤死亡:

run方法結束,線程對象變成垃圾,等待GC回收。

再順便介紹一下線程的一些方法:

void run() 繼承Thread或者實現Runnable時必須實現的方法,裡面寫耗費時間的操作。

void start() 開啟線程的方法

static void sleep(long t) 釋放CPU的執行權,不釋放鎖

static void sleep(long millis,int nanos)

final void wait()釋放CPU的執行權,釋放鎖

final void notify()喚醒線程池中的任意一個線程

interrupt():中斷線程。

setPriority(int newPriority):設置線程的優先級。(默認優先級是5)

getPriority():返回線程的優先級。

toString():返回該線程的字符串表示形式,包括線程名稱、優先級和線程組。

Thread.yield():暫停當前正在執行的線程對象,並執行其他線程。 禮讓線程

setDaemon(true):將該線程標記為守護線程或用戶線程。當正在運行的線程都是守護線程時,Java 虛擬機退出。該方法必須在啟動線程前調用。

join: 加入一個線程,當這個線程執行完之後才會執行別的線程。

Copyright © Linux教程網 All Rights Reserved