一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java線程編程中的主線程講解

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

2020-01-07 14:20goldensun JAVA教程

這篇文章主要介紹了Java線程編程中的主線程,是Java入門學習中的基礎知識,需要的朋友可以參考下

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

  1. 它是產生其他子線程的線程;
  2. 通常它必須最后完成執行,因為它執行各種關閉動作。

盡管主線程在程序啟動時自動創建,但它可以由一個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 特指線程名稱。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人高清精品免费观看 | 亚洲好视频 | 日韩欧美亚洲每日更新网 | 无人区1在线观看 | 91精品天美精东蜜桃传媒免费 | 国产视频久久久久 | 麻豆网页 | japanesemoms乱熟 | 校花被吃奶还摸下面 | 四虎成人网 | 99香蕉网| 亚洲福利一区二区三区 | 欧美伊人久久久久久久久影院 | 无套内射在线观看THEPORN | 精品国产成人a区在线观看 精品国产91久久久久久久 | 精品日韩一区二区三区 | gay18高中生白袜xnxx动漫 | 情缘免费观看完整版 | 欧美男男gaygayxxx | 亚洲国产精品一区二区久久 | 91热这里只有精品 | a∨在线观看 | 唯美 清纯 另类 亚洲制服 | 日本高清中文字幕一区二区三区 | 爽爽窝窝午夜精品一区二区 | 国产剧情麻豆刘玥视频 | 手机在线伦理片 | 天天做天天爱天天操 | 精品久久久久久午夜 | 日韩一级片在线免费观看 | 青青热久久综合网伊人 | 国产一卡2卡3卡四卡国色天香 | 婷婷色天使在线视频观看 | 精品国产乱码久久久久久人妻 | 日本免费三片在线播放 | 91免费永久国产在线观看 | 国产一区二区三区在线看片 | 污到你怀疑人生 | 嫩草影院永久在线一二三四 | 草莓视频榴莲视频 | 久久永久影院免费 |