開發者學堂課程【Java進階程式設計:線程的命名和取得】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址: https://developer.aliyun.com/learning/course/20
線程的命名和取得
多線程的運作狀态是不确定的,那麼在程式開發之中為了可以擷取到一些需要使用的線程就隻能依靠線程的名字來進行操作。
是以線程的名字是一個至關重要的概念,這樣在Thread類之中就提供有線程名稱的處理;
·構造方法:public Thread(Runnable target,String name);
·設定名字:public final void setName(String name);
·取得名字:public final String getName();
對于線程對象的獲得是不可能隻靠一個this來完成的,因為線程的狀态不可控,但是有一點是明确的,所有的線程對象都一定要執行run()方法,那麼這個時候可以考慮擷取目前線程,在Thread類裡面提供有擷取目前線程的一個方法。
·擷取目前線程:public static Thread current Thread():
範例:觀察線程的命名操作
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYkJWZhdTZ2EWO3gTNiVTOwUzM0EmN0UWZ5UDN4QTNk9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
當開發者為線程設定名字的時候,而如果沒有設定名字,則會自動生成一個不重複的名字,這種自動的屬性命名主要是依靠了static屬性完成的,在Thread類裡面定義了如下操作:
private static int threadInitNumber;
private static synchronized int nextThreadNum(){
Return threadInitNumber++;
}
範例:觀察一個程式
通過此時的代碼可以發現當使用了“mt.run()”直接在主方法之中調用線程類對象中的run()方法所獲得的線程對象的名字為“main”
是以可以得出一個結論:主方法也是一個線程。
那麼現在問題來了,所有的線程都是在程序上的劃分,那麼程序在哪裡?
每當使用Java指令執行程式的時候就表示啟動了一個JVM的程序,一台電腦上可以同時啟動若幹個JVM程序是以每一個JVM的程序都會有各自的線程。
在任何的開發之中,主線程可以建立若幹個子線程,建立子線程的目的是可以将一些複雜邏輯或者比較耗時的邏輯交給子線程處理;
範例:子線程的處理
主線程負責處理整體流程,而子線程負責處理耗時流程。