程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java線程編程中的主線程講授

Java線程編程中的主線程講授

編輯:關於JAVA

Java線程編程中的主線程講授。本站提示廣大學習愛好者:(Java線程編程中的主線程講授)文章只能為提供參考,不一定能成為您想要的結果。以下是Java線程編程中的主線程講授正文


當Java法式啟動時,一個線程連忙運轉,該線程平日叫做法式的主線程(main thread),由於它是法式開端時就履行的。主線程的主要性表現在兩方面:

  1. 它是發生其他子線程的線程;
  2. 平日它必需最初完成履行,由於它履行各類封閉舉措。
  3. 雖然主線程在法式啟動時主動創立,但它可以由一個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 特指線程稱號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved