最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年09月28日 18:22:28   投稿:goldensun  
這篇文章主要介紹了Java線程編程中的主線程,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

當(dāng)Java程序啟動(dòng)時(shí),一個(gè)線程立刻運(yùn)行,該線程通常叫做程序的主線程(main thread),因?yàn)樗浅绦蜷_始時(shí)就執(zhí)行的。主線程的重要性體現(xiàn)在兩方面:

  1. 它是產(chǎn)生其他子線程的線程;
  2. 通常它必須最后完成執(zhí)行,因?yàn)樗鼒?zhí)行各種關(guān)閉動(dòng)作。

盡管主線程在程序啟動(dòng)時(shí)自動(dòng)創(chuàng)建,但它可以由一個(gè)Thread對(duì)象控制。為此,你必須調(diào)用方法currentThread()獲得它的一個(gè)引用,currentThread()是Thread類的公有的靜態(tài)成員。它的通常形式如下:

  static Thread currentThread( )


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

讓我們從復(fù)習(xí)下面例題開始:

// 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");
    }
  }
}

在本程序中,當(dāng)前線程(自然是主線程)的引用通過調(diào)用currentThread()獲得,該引用保存在局部變量t中。然后,程序顯示了線程的信息。接著程序調(diào)用setName()改變線程的內(nèi)部名稱。線程信息又被顯示。然后,一個(gè)循環(huán)數(shù)從5開始遞減,每數(shù)一次暫停一秒。暫停是由sleep()方法來完成的。Sleep()語句明確規(guī)定延遲時(shí)間是1毫秒。注意循環(huán)外的try/catch塊。

Thread類的sleep()方法可能引發(fā)一個(gè)InterruptedException異常。這種情形會(huì)在其他線程想要打攪沉睡線程時(shí)發(fā)生。本例只是打印了它是否被打斷的消息。在實(shí)際的程序中,你必須靈活處理此類問題。下面是本程序的輸出:

Current thread: Thread[main,5,main]
After name change: Thread[My Thread,5,main]
5
4
3
2
1

注意t作為語句println()中參數(shù)運(yùn)用時(shí)輸出的產(chǎn)生。該顯示順序:線程名稱,優(yōu)先級(jí)以及組的名稱。默認(rèn)情況下,主線程的名稱是main。它的優(yōu)先級(jí)是5,這也是默認(rèn)值,main也是所屬線程組的名稱。一個(gè)線程組(thread group)是一種將線程作為一個(gè)整體集合的狀態(tài)控制的數(shù)據(jù)結(jié)構(gòu)。這個(gè)過程由專有的運(yùn)行時(shí)環(huán)境來處理,在此就不贅述了。線程名改變后,t又被輸出。這次,顯示了新的線程名。

讓我們更仔細(xì)的研究程序中Thread類定義的方法。sleep()方法按照毫秒級(jí)的時(shí)間指示使線程從被調(diào)用到掛起。它的通常形式如下:

  static void sleep(long milliseconds) throws InterruptedException


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

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

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

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

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


這里,threadName 特指線程名稱。

相關(guān)文章

  • Android開發(fā)在輪播圖片上加入點(diǎn)擊事件的方法

    Android開發(fā)在輪播圖片上加入點(diǎn)擊事件的方法

    這篇文章主要介紹了Android開發(fā)在輪播圖片上加入點(diǎn)擊事件的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 如何解決Springboot?Dao注入失敗的問題

    如何解決Springboot?Dao注入失敗的問題

    這篇文章主要介紹了如何解決Spring?boot?Dao注入失敗的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java比較兩個(gè)list是否相同equals的代碼詳解

    java比較兩個(gè)list是否相同equals的代碼詳解

    在本篇文章里小編給大家分享的是關(guān)于java比較兩個(gè)list是否相同equals的代碼詳解,有需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • Jenkins安裝和插件管理配置入門教程

    Jenkins安裝和插件管理配置入門教程

    這篇文章主要介紹了Jenkins安裝和插件管理知識(shí),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 在java中ArrayList集合底層的擴(kuò)容原理

    在java中ArrayList集合底層的擴(kuò)容原理

    這篇文章主要介紹了在java中ArrayList集合底層的擴(kuò)容原理,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • 關(guān)于java中可變長參數(shù)的定義及使用方法詳解

    關(guān)于java中可變長參數(shù)的定義及使用方法詳解

    下面小編就為大家?guī)硪黄P(guān)于java中可變長參數(shù)的定義及使用方法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • jdk中String類設(shè)計(jì)成final的原由

    jdk中String類設(shè)計(jì)成final的原由

    為什么jdk中把 String 類設(shè)計(jì)成final,主要是為了“ 效率 ”和“安全性”的緣故,若 String 允許被繼承, 由于它的高度被使用率, 可能會(huì)降低程序的性能,所以String被定義成final,需要了解的朋友可以參考下
    2013-01-01
  • Spring集成Druid連接池及監(jiān)控配置的全過程

    Spring集成Druid連接池及監(jiān)控配置的全過程

    java程序很大一部分要操作數(shù)據(jù)庫,為了提高性能操作數(shù)據(jù)庫的時(shí)候,有不得不使用數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關(guān)于Spring集成Druid連接池及監(jiān)控配置的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Java實(shí)現(xiàn)手寫一個(gè)線程池的示例代碼

    Java實(shí)現(xiàn)手寫一個(gè)線程池的示例代碼

    線程池技術(shù)想必大家都不陌生把,相信在平時(shí)的工作中沒有少用,而且這也是面試頻率非常高的一個(gè)知識(shí)點(diǎn),那么大家知道它的實(shí)現(xiàn)原理和細(xì)節(jié)嗎?本文就來通過手寫一個(gè)簡單的線程池框架,去掌握線程池的基本原理,感興趣的可以學(xué)習(xí)一下
    2022-10-10
  • Java設(shè)計(jì)模式之享元模式實(shí)例詳解

    Java設(shè)計(jì)模式之享元模式實(shí)例詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式之享元模式,結(jié)合實(shí)例形式詳細(xì)分析了享元模式的概念、功能、定義及使用方法,需要的朋友可以參考下
    2018-04-04

最新評(píng)論

方正县| 朝阳县| 陈巴尔虎旗| 勃利县| 句容市| 西吉县| 彰武县| 清新县| 军事| 修水县| 义乌市| 伊宁县| 连州市| 府谷县| 宣化县| 通州市| 佛学| 怀远县| 灯塔市| 正蓝旗| 密云县| 宁都县| 安吉县| 义乌市| 神池县| 沙湾县| 个旧市| 田阳县| 济源市| 唐海县| 南澳县| 吉林省| 大足县| 凭祥市| 榆社县| 鱼台县| 增城市| 综艺| 长丰县| 信宜市| 安溪县|