Jafe Lee

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            49 隨筆 :: 0 文章 :: 24 評論 :: 0 Trackbacks
          ?1、開啟一個新線程的方法,歸結(jié)起來不外乎有兩種:
          • 繼承類java.lang.Thread ,覆蓋其中的方法 run(); 實例化該子類,例如:
            public?class?MyThread?extends?Thread?
            {
            ???
            public?void?run()?
            ??{
            ??????
            //?do?some?work
            ???}
            }
            //?code?to?use?MyThread
            new?MyThread().start();
          • 定義一個實現(xiàn)接口 java.lang.Runnable; 的類,實現(xiàn)該接口的方法run(); 然后將該類的一個實例作為實參傳給Thread的構(gòu)造方法。例如:
            public?class?MyThread2?implements?Runnable?
            {
            ???
            public?void?run()?
            ??{
            ??????
            //?do?some?work
            ???}
            }

            //?code?to?use?MyThread2
            Thread?t?=?new?Thread(MyThread2);
            t.start();
          • 無論用哪種方法最終得到的都是一個Thread的object,當(dāng)調(diào)用方法start()時,系統(tǒng)將創(chuàng)建一個新的線程來執(zhí)行run() 方法,這個新的線程將一直運行知道run方法退出。在新線程開始運行的同時,原來的線程也將繼續(xù)執(zhí)行start()之后的代碼。
          2、一個線程的生命周期:每個線程的生命周期(lifecycle)一共有六個狀態(tài)(state),這六個狀態(tài)用枚舉類型Thread.State的六個枚舉常量來表示。分別是:
          3、線程優(yōu)先級:線程可以有不同優(yōu)先級,Thread定義了三個優(yōu)先級常量:
          public?final?static?int?MIN_PRIORITY?=?1;?//最小優(yōu)先級
          public?final?static?int?NORM_PRIORITY?=?5;?//默認的優(yōu)先級
          public?final?static?int?MAX_PRIORITY?=?10;?//最大優(yōu)先級
          一個線程的優(yōu)先級可以是1到10中任何一個整數(shù)(包括1和10).方法 void setPriority(int newPriority) 可以用來設(shè)置線程有限級。關(guān)于優(yōu)先級需要注意的是,調(diào)度器總是選擇優(yōu)先級最高的線程來執(zhí)行,但是java的線程優(yōu)先級是和操作系統(tǒng)相關(guān)的,例如windows XP系統(tǒng)有7個優(yōu)先級,java中的某些優(yōu)先級會對應(yīng)到xp的7個優(yōu)先級中去。但是SUN 的linux版本的JVM上所有線程的優(yōu)先級都是NORM_PRIORITY。在使用優(yōu)先級的同時也要避免餓死的情況出現(xiàn)。

          4、處理 uncaught exceptions:
          當(dāng)一個線程的run()方法執(zhí)行完畢或者run()方法執(zhí)行return語句時,線程正常中止。當(dāng)run方法拋出一個unchecked異常時(注意:run方法是不能拋出checked異常的),線程也會中止并且打印出異常信息。如果你想捕獲處理該異常,則必須為該線程添加一個uncaught exception handler來執(zhí)行。例如:
          package?uncaughtexception;
          public?class?MyThread?implements?Runnable
          {
          ????@Override
          ????
          public?void?run()
          ????{
          ????????
          throw?new?UnsupportedOperationException();
          ????}
          }


          package?uncaughtexception;

          public?class?TestMyThread
          {
          ????
          public?static?void?main(String?[]?args)
          ????{
          ????????Thread?aThread?
          =?new?Thread(new?MyThread());
          ????????
          ????????aThread.setUncaughtExceptionHandler(
          new?Thread.UncaughtExceptionHandler()
          ????????{
          ????????????@Override
          ????????????
          public?void?uncaughtException(Thread?t,?Throwable?e)
          ????????????{
          ????????????????System.out.println(
          "Hello");
          ????????????}
          ????????});
          ????????
          ????????aThread.start();
          ????}
          }
          運行結(jié)果: Hello
          posted on 2007-09-12 21:32 Jafe Lee 閱讀(955) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 斗六市| 福贡县| 山丹县| 湘潭县| 龙泉市| 佳木斯市| 莒南县| 金山区| 克什克腾旗| 玉林市| 昌乐县| 乌兰察布市| 监利县| 梅河口市| 宁武县| 三门峡市| 绥芬河市| 周至县| 漳州市| 易门县| 大庆市| 东源县| 永新县| 墨江| 喀喇沁旗| 汕头市| 华宁县| 叶城县| 台中市| 大名县| 响水县| 修水县| 栾川县| 临泉县| 常山县| 女性| 玛纳斯县| 江口县| 潮安县| 新绛县| 彭水|