1. 線程優(yōu)先權(quán)
          每個(gè)線程都有一定的優(yōu)先權(quán),且默認(rèn)從父線程繼承優(yōu)先權(quán),也就是運(yùn)行這個(gè)線程的線程。可以使用setPriority方法設(shè)置,從MIN_PRIORITY(1)到MAX_PRIORITY(10),NORM_PRIORITY是5。
          然而線程優(yōu)先權(quán)更多的是由系統(tǒng)決定的。如在WinXP/NT有若干個(gè)優(yōu)先等級(jí),某些Java的優(yōu)先級(jí)也自動(dòng)對(duì)應(yīng)到相應(yīng)的等級(jí)上。但是在Sun JVM for Linux中,線程優(yōu)先權(quán)被忽視,所有的線程享有相同的優(yōu)先權(quán)。
          所以,最好把線程僅僅看成是對(duì)線程管理器的hint。不要由線程優(yōu)先級(jí)來(lái)決定你的程序結(jié)構(gòu)。
          注意:在使用優(yōu)先級(jí)的時(shí)候,如果某幾個(gè)很少會(huì)停滯的線程享有高優(yōu)先級(jí),很有可能低優(yōu)先級(jí)的線程就不會(huì)被運(yùn)行。
          2. Daemon進(jìn)程
          把一個(gè)進(jìn)程變?yōu)閐aemon進(jìn)程可以調(diào)用方法setDaemon(true)。所謂daemon,就是只用來(lái)服務(wù)其他進(jìn)程的進(jìn)程,所以當(dāng)只有daemon進(jìn)程運(yùn)行時(shí),JVM就退出了。
          3. 進(jìn)程組
          ThreadGroup g = new ThreadGroup(String groupName);
          注意groupName必須唯一。
          加入線程:
          Thread t = new Thread(g, String threadName);
          進(jìn)程組中可以有子進(jìn)程組,新創(chuàng)建的子進(jìn)程組默認(rèn)屬于當(dāng)前進(jìn)程組。
          ThreadGroup類(lèi)的方法:
          int activeCount() 返回組中活動(dòng)的線程數(shù)。
          int enumerate(Thread[] list) 獲得組中每個(gè)活動(dòng)進(jìn)程的引用,返回實(shí)際加入list的進(jìn)程數(shù)。
          ThreadGroup getParent()
          void interrupt 中止所有的進(jìn)程和子進(jìn)程組。
          4. 處理未捕獲異常
          線程的run方法并不能拋出任何checked異常,但因?yàn)橐粋€(gè)unchecked異常而結(jié)束。
          在線程結(jié)束前,異常會(huì)被傳遞給一個(gè)處理器。
          異常處理器必須實(shí)現(xiàn)了Thread.UncaughtExceptionHandler接口,后者只有一個(gè)方法
          void uncaughtException(Thread t, Throwable e)
          可以在任何線程中使用setUncaughtExceptionHandler方法設(shè)置處理器,也可以使用Thread的靜態(tài)方法setDefaultUncaughtExceptionHandler為每個(gè)線程指定默認(rèn)的處理器。如果不為每個(gè)獨(dú)立的線程指定處理器,處理器默認(rèn)為該線程的線程組對(duì)象。
          ThreadGroup類(lèi)實(shí)現(xiàn)了Thread.UncaughtExceptionHandler接口,它的uncaughtException方法按下列步驟進(jìn)行:
          1)如果該進(jìn)程組有父進(jìn)程組,調(diào)用父進(jìn)程組的uncaughtException方法。
          2)否則,如果Thread.getDefaultUncaughtExceptionHandler返回一個(gè)非null的引用,該處理器被調(diào)用。
          3)如果仍未找到,且Throwable參數(shù)是ThreadDeath的實(shí)例,不進(jìn)行任何處理。
          4)上述都未執(zhí)行的話(huà),進(jìn)程名和Throwable參數(shù)的調(diào)用棧就會(huì)輸出到System.err上

          posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          2.28 Java notes - Thread Properties

          Posted on 2007-04-22 20:25 ZelluX 閱讀(285) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): OOP
          2007-02-28 14:05:52
          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 手机| 萍乡市| 罗山县| 星子县| 分宜县| 太湖县| 兴和县| 阳西县| 武强县| 始兴县| 谢通门县| 灵武市| 汶川县| 左权县| 海盐县| 靖江市| 淄博市| 道孚县| 汶川县| 江门市| 宜黄县| 当涂县| 普陀区| 乌什县| 青海省| 栾川县| 土默特右旗| 常山县| 阿瓦提县| 钦州市| 曲周县| 曲靖市| 鸡东县| 湘乡市| 峨山| 右玉县| 临颍县| 博白县| 凤山市| 泰和县| 雷州市|