BlogJava 聯系 聚合 管理  

          Blog Stats

          隨筆檔案

          exams


          java世界

          世界Java

          import java.io.*;

          //多線程編程
          public class MultiThread  
          {
          public static void main(String args[])
          {
          System.out.println("我是主線程!");
          //下面創建線程實例thread1
          ThreadUseExtends thread1=new ThreadUseExtends();
          //創建thread2時以實現了Runnable接口的THhreadUseRunnable類實例為參數
          Thread thread2=new Thread(new ThreadUseRunnable(),"SecondThread");
          thread1.start();//啟動線程thread1使之處于就緒狀態
          //thread1.setPriority(6);//設置thread1的優先級為6
          //優先級將決定cpu空出時,處于就緒狀態的線程誰先占領cpu開始運行
          //優先級范圍1到10,MIN_PRIORITY,MAX_PRIORITY,NORM_PAIORITY
          //新線程繼承創建她的父線程優先級,父線程通常有普通優先級即5NORM_PRIORITY
          System.out.println("主線程將掛起7秒!");
          try
          {
          Thread.sleep(7000);//主線程掛起7秒
          }
          catch (InterruptedException e)
          {
          return;
          }
          System.out.println("又回到了主線程!");
          if(thread1.isAlive())
          {  
          thread1.stop();//如果thread1還存在則殺掉他
          System.out.println("thread1休眠過長,主線程殺掉了thread1!");
          }
          else
          System.out.println("主線程沒發現thread1,thread1已醒順序執行結束了!");
          thread2.start();//啟動thread2
          System.out.println("主線程又將掛起7秒!");
          try
          {
          Thread.sleep(7000);//主線程掛起7秒
          }
          catch (InterruptedException e)
          {
          return;
          }
          System.out.println("又回到了主線程!");
          if(thread2.isAlive())
          {  
          thread2.stop();//如果thread2還存在則殺掉他
          System.out.println("thread2休眠過長,主線程殺掉了thread2!");
          }
          else
          System.out.println("主線程沒發現thread2,thread2已醒順序執行結束了!");
          System.out.println("程序結束按任意鍵繼續!");
          try
          {
          System.in.read();
          }
          catch (IOException e)
          {
          System.out.println(e.toString());
          }


          }//main
          }//MultiThread



          class ThreadUseExtends extends Thread
          //通過繼承Thread類,并實現它的抽象方法run()
          //適當時候創建這一Thread子類的實例來實現多線程機制
          //一個線程啟動后(也即進入就緒狀態)一旦獲得CPU將自動調用它的run()方法
          {


          ThreadUseExtends(){}//構造函數
          public void run()
          {
          System.out.println("我是Thread子類的線程實例!");
          System.out.println("我將掛起10秒!");
          System.out.println("回到主線程,請稍等,剛才主線程掛起可能還沒醒過來!");
          try
          {
          sleep(10000);//掛起5秒
          }
          catch (InterruptedException e)
          {
          return;
          }
          //如果該run()方法順序執行完了,線程將自動結束,而不會被主線程殺掉
          //但如果休眠時間過長,則線程還存活,可能被stop()殺掉
          }
          }



          class ThreadUseRunnable implements Runnable
          //通過實現Runnable接口中的run()方法,再以這個實現了run()方法的類
          //為參數創建Thread的線程實例
          {
          //Thread thread2=new Thread(this);
          //以這個實現了Runnable接口中run()方法的類為參數創建Thread類的線程實例
          ThreadUseRunnable(){}//構造函數
          public void run()
          {
          System.out.println("我是Thread類的線程實例并以實現了Runnable接口的類為參數!");
          System.out.println("我將掛起1秒!");
          System.out.println("回到主線程,請稍等 jn0-120  try
          {
          Thread.sleep(1000);//掛起5秒
          }
          catch (InterruptedException e)
          {
          return;
          }
          //如果該run()方法順序執行完了,線程將自動結束,而不會被主線程殺掉
          //但如果休眠時間過長,則線程還存活,可能被stop()殺掉
          }


          }
          //該程序可做的修改如改休眠時間或優先級setPriority()


          評論

          # re: java一個多線程的經典例子 2007-09-19 11:19 千里冰封
          呵呵,有意思.其實JAVA的線程確實挺靈活的  回復  更多評論
            

          # re: java一個多線程的經典例子 2007-09-19 11:37 Unmi
          代碼有點亂,不過意思大概是這樣子的
          Win32下是主線程使用API方法
          WaitForSingleObject() 等待單一線程
          或者
          WaitForMultiObject() 等待多個線程
          等待用戶線程執行完的信號,退出主線程

          如果你能夠把Object的notify()或notifyAll(),三個wait()方法應用上,那么你對線程以及線程間的事件對象(win32的名詞)就有更透徹的理解了

          多線程的實現機制其實在Java中與用Win32 API是完全一致的。  回復  更多評論
            

          # re: java一個多線程的經典例子 2007-09-19 11:59 千里冰封
          JAVA線程也是模擬的,不過模擬的很牛B  回復  更多評論
            

          # re: java一個多線程的經典例子 2007-09-19 17:25 Unmi
          很奇怪,不過也很顯然,有人被瘋狗咬人,迅速過了潛伏期,轉而亂咬起人來了。  回復  更多評論
            

          # re: java一個多線程的經典例子 2007-09-19 21:21 TrampEagle
          不錯,有意思,寫的有意思,哈哈。  回復  更多評論
            

          # re: java一個多線程的經典例子 2008-10-18 22:25 ddd
          Thread.sleep(1000);//掛起5秒   回復  更多評論
            

          # re: java一個多線程的經典例子 2008-10-18 22:25 ddd
          Thread.sleep(1000);//掛起5秒
          Thread.sleep(1000);//掛起5秒
          Thread.sleep(1000);//掛起5秒
          Thread.sleep(1000);//掛起5秒   回復  更多評論
            

          # re: java一個多線程的經典例子 2011-07-26 09:51 薩嘎哈
          sb  回復  更多評論
            

          # re: java一個多線程的經典例子[未登錄] 2012-07-10 14:38 123
          @千里冰封
          干脆看不懂啊  回復  更多評論
            

          # re: java一個多線程的經典例子[未登錄] 2012-07-10 14:39 123
          看不懂  回復  更多評論
            

          # re: java一個多線程的經典例子 2013-03-28 10:47 楊揚
          很經典,確實不錯  回復  更多評論
            

          # re: java一個多線程的經典例子 2013-07-04 15:10 hhshao_10
          樓主學的太淺了吧。。。表面是多線程,問題根本沒體現出來,對同一資源的訪問有沒?線程之間的通信有沒?我覺得這例子不經典。。傻逼樓主哈哈  回復  更多評論
            

          # re: java一個多線程的經典例子 2013-07-09 11:34 寶少
          看不太懂。。。@薩嘎哈
          sb就是你,你就是sb  回復  更多評論
            

          # re: java一個多線程的經典例子 2013-07-09 11:34 寶少
          @薩嘎哈
          sb就是你,你就是sb,還是龜兒子  回復  更多評論
            

          # re: java一個多線程的經典例子 2013-09-22 17:32 Bairrfhoinn
          這種代碼,怎壹個亂字了得,就不會用用代碼高亮工具排個版啊...  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 公主岭市| 章丘市| 磐安县| 兰考县| 霍城县| 临朐县| 仙游县| 新田县| 共和县| 娱乐| 桐庐县| 富民县| 潼关县| 上林县| 松滋市| 洪湖市| 博野县| 尼玛县| 仙居县| 出国| 大连市| 湘西| 固始县| 临城县| 新郑市| 杂多县| 邮箱| 平山县| 山东| 马公市| 密云县| 军事| 朝阳县| 乐平市| 准格尔旗| 鹰潭市| 岢岚县| 报价| 遵义县| 灵川县| 黔东|