<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            Java線程編程中的主線程詳細介紹

            時間:2025-01-31 15:18:29 java語言 我要投稿
            • 相關推薦

            Java線程編程中的主線程詳細介紹

              當Java程序啟動時,一個線程立刻運行,該線程通常叫做程序的主線程(main thread),因為它是程序開始時就執行的。主線程的重要性體現在兩方面:

              它是產生其他子線程的線程;

              通常它必須最后完成執行,因為它執行各種關閉動作。

              盡管主線程在程序啟動時自動創建,但它可以由一個Thread對象控制。為此,你必須調用方法currentThread()獲得它的一個引用,currentThread()是Thread類的公有的靜態成員。它的通常形式如下:

              ?

            1
            static Thread currentThread( )

              該方法返回一個調用它的線程的引用。一旦你獲得主線程的引用,你就可以像控制其他線程那樣控制主線程。

              讓我們從復習下面例題開始:

              ?

            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            11
            12
            13
            14
            15
            16
            17
            18
            // 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異常。這種情形會在其他線程想要打攪沉睡線程時發生。本例只是打印了它是否被打斷的消息。在實際的程序中,你必須靈活處理此類問題。下面是本程序的輸出:

              ?

            1
            2
            3
            4
            5
            6
            7
            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()方法按照毫秒級的時間指示使線程從被調用到掛起。它的通常形式如下:

              ?

            1
            static void sleep(long milliseconds) throws InterruptedException

              掛起的時間被明確定義為毫秒。該方法可能引發InterruptedException異常。

              sleep()方法還有第二種形式,顯示如下,該方法允許你指定時間是以毫秒還是以納秒為周期。

              ?

            1
            static void sleep(long milliseconds, int nanoseconds) throws InterruptedException

              第二種形式僅當允許以納秒為時間周期時可用。如上述程序所示,你可以用setName()設置線程名稱,用getName()來獲得線程名稱(該過程在程序中沒有體現)。這些方法都是Thread 類的成員,聲明如下:

              ?

            1
            2
            final void setName(String threadName)
            final String getName( )

              這里,threadName 特指線程名稱。

            【Java線程編程中的主線程詳細介紹】相關文章:

            java多線程-線程通信實例詳細解讀07-07

            java多線程介紹08-23

            JAVA中終止線程的方法08-12

            java中如何停止線程08-14

            Java多線程的線程守護例子06-08

            java的多線程09-09

            java多線程08-31

            簡單地分析Java線程編程中ThreadLocal類的使用08-10

            Java多線程的用法介紹09-15

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院