Java線程編程中的主線程講授。本站提示廣大學習愛好者:(Java線程編程中的主線程講授)文章只能為提供參考,不一定能成為您想要的結果。以下是Java線程編程中的主線程講授正文
當Java法式啟動時,一個線程連忙運轉,該線程平日叫做法式的主線程(main thread),由於它是法式開端時就履行的。主線程的主要性表現在兩方面:
雖然主線程在法式啟動時主動創立,但它可以由一個Thread對象掌握。為此,你必需挪用辦法currentThread()取得它的一個援用,currentThread()是Thread類的私有的靜態成員。它的平日情勢以下:
static Thread currentThread( )
該辦法前往一個挪用它的線程的援用。一旦你取得主線程的援用,你便可以像掌握其他線程那樣掌握主線程。
讓我們從溫習上面例題開端:
// Controlling the main Thread. class CurrentThreadDemo { public static void main(String args[]) { Thread t = Thread.currentThread(); System.out.println("Current thread: " + t); // change the name of the thread t.setName("My Thread"); System.out.println("After name change: " + t); try { for(int n = 5; n > 0; n--) { System.out.println(n); Thread.sleep(1000); } } catch (InterruptedException e) { System.out.println("Main thread interrupted"); } } }
在本法式中,以後線程(天然是主線程)的援用經由過程挪用currentThread()取得,該援用保留在部分變量t中。然後,法式顯示了線程的信息。接著法式挪用setName()轉變線程的外部稱號。線程信息又被顯示。然後,一個輪回數從5開端遞加,每數一次暫停一秒。暫停是由sleep()辦法來完成的。Sleep()語句明白劃定延遲時光是1毫秒。留意輪回外的try/catch塊。
Thread類的sleep()辦法能夠激發一個InterruptedException異常。這類情況會在其他線程想要打擾覺醒線程時產生。本例只是打印了它能否被打斷的新聞。在現實的法式中,你必需靈巧處置此類成績。上面是本法式的輸入:
Current thread: Thread[main,5,main] After name change: Thread[My Thread,5,main] 5 4 3 2 1
留意t作為語句println()中參數應用時輸入的發生。該顯示次序:線程稱號,優先級和組的稱號。默許情形下,主線程的稱號是main。它的優先級是5,這也是默許值,main也是所屬線程組的稱號。一個線程組(thread group)是一種將線程作為一個全體聚集的狀況掌握的數據構造。這個進程由專有的運轉時情況來處置,在此就不贅述了。線程名轉變後,t又被輸入。此次,顯示了新的線程名。
讓我們更細心的研討法式中Thread類界說的辦法。sleep()辦法依照毫秒級的時光指導使線程從被挪用到掛起。它的平日情勢以下:
static void sleep(long milliseconds) throws InterruptedException
掛起的時光被明白界說為毫秒。該辦法能夠激發InterruptedException異常。
sleep()辦法還有第二種情勢,顯示以下,該辦法許可你指准時間是以毫秒照樣以納秒為周期。
static void sleep(long milliseconds, int nanoseconds) throws InterruptedException
第二種情勢僅當許可以納秒為時光周期時可用。如上述法式所示,你可以用setName()設置線程稱號,用getName()來取得線程稱號(該進程在法式中沒有表現)。這些辦法都是Thread 類的成員,聲明以下:
final void setName(String threadName) final String getName( )
這裡,threadName 特指線程稱號。