posts - 17,  comments - 14,  trackbacks - 0

          多線程:減輕編寫交互頻繁、涉及面多的程序的難度;充分利用計算機資源。

                一個操作系統,可以有多個進程,每個進程上邊會有多個線程。一個程序的運行至少啟動兩個線程:main線程和gc(守護)線程。

          線程分為前臺線程和后臺線程(守護線程):

          對Java程序來說,只要有一個前臺線程在運行,這個進程就不會結束;

          如果一個進程只有后臺線程在運行,這個進程就會結束;

          如果某個線程對象在啟動(調用start()方法)之前調用setDaemon(true);方法,這個線程就變成了后臺線程。

          線程的狀態轉換:

          image 

              * 多線程的方法有兩種:

          1、繼承Thread類,并重寫run()方法;

          2、實現Runnable接口。

          雖然有兩種不同的方法,但是它們的多線程啟動方法是相同的,都是同歸Thread類來啟動多線程的[p.start();]。

          start使蓋縣程開始執行是指Java虛擬機調用該線程的run()方法;

          start只是使線程就緒,什么時候開始執行由CPU決定。

          線程只能啟動一次;如果啟動多次,程序在編譯時不會出現錯誤,但是執行時會出現錯誤。

          兩種方法的不同在于:

          方法1的缺點:Java為單繼承,當一個想實現多線程的類繼承了Thread類后就不可以再繼承其他類,這樣就不靈活,沒有擴展性了;

          方法2的優點:實現Runnable接口不僅可以再繼承其他類,還可以實現資源共享。

          總之實現Runnable接口比繼承Thread類要更好一些,所以盡量要使用Runnable而不用Thread。

          下面就這兩種方法舉例說明:

          方法1,繼承Thread類,重寫run()方法。

          class MyThread11 extends Thread{
              
          private int time;
              
          public MyThread11 (String name,int time){
                  
          super(name);
                  
          this.time=time;
              }

              
          public void run(){
                  
          try {
                      Thread.sleep(
          this.time);
                  }
           catch (InterruptedException e) {
                      e.printStackTrace();
                  }

                  System.out.println(Thread.currentThread().getName()
          +"-->運行,延遲 "+this.time+"毫秒。");
              }

          }

          public class MyDemo01 {
              
          public static void main(String[] args) {
                  MyThread11 mt1 
          = new MyThread11("T--A",1000);
                  MyThread11 mt2 
          = new MyThread11("T--B",2000);
                  MyThread11 mt3 
          = new MyThread11("T--C",3000);
                  mt1.start();
                  mt2.start();
                  mt3.start();
              }

          }

          程序運行結果:(每隔一秒打印一行,打印完后程序結束)
          image 

          方法2,實現Runnable接口。
          class MyThread22 implements Runnable{
              
          private int time;
              
          private String name;
              
          public MyThread22 (String name,int time){
                  
          this.name=name;
                  
          this.time=time;
              }

              
          public void run() {
                  
          try {
                      Thread.sleep(
          this.time);
                  }
           catch (InterruptedException e) {
                      e.printStackTrace();
                  }

                  System.out.println(
          this.name+"-->運行,延遲 "+this.time+"毫秒。");
              }
              
          }

          public class MyDemo02 {
              
          public static void main(String[] args) {
                  MyThread22 mt1 
          = new MyThread22("T--A",1000);
                  MyThread22 mt2 
          = new MyThread22("T--B",2000);
                  MyThread22 mt3 
          = new MyThread22("T--C",3000);
                  
          new Thread(mt1).start();
                  
          new Thread(mt2).start();
                  
          new Thread(mt3).start();
              }

          }


          程序運行結果:

          (每隔一秒打印一行,打印完后程序結束)

          image 
          posted on 2010-11-08 16:33 Mineralwasser 閱讀(384) 評論(0)  編輯  收藏

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


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          文章檔案(21)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 曲水县| 太仆寺旗| 武川县| 永德县| 威海市| 乳源| 汾阳市| 荥阳市| 昂仁县| 灵武市| 安西县| 津南区| 二手房| 石景山区| 汽车| 伊宁市| 绥阳县| 武陟县| 大城县| 新竹市| 冕宁县| 海宁市| 托克逊县| 山丹县| 大荔县| 麻城市| 石嘴山市| 青川县| 三江| 金门县| 绥江县| 本溪市| 商城县| 大姚县| 绥中县| 九台市| 镇江市| 辉南县| 泰安市| 安阳县| 佳木斯市|