qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java基礎鞏固之線程學習

            一、線程的學習
            線程就是程序中執行單個任務的順序的流程。
            線程創建的兩種方式:
            1、繼承Thread類
          publicstaticvoidmain(String[]args)
          {
          //繼承Thread類覆蓋父類run方法
          Threadthread=newThread()
          {
          @Override
          publicvoidrun()
          {
          while(true)
          {
          System.out.println(Thread.currentThread().getName());
          }
          }
          };
          thread.start();
          }
            2、實現Runnable接口的run方法
          publicstaticvoidmain(String[]args)
          {
          Threadthread=newThread(newRunnable()
          {
          @Override
          publicvoidrun()
          {
          while(true)
          {
          System.out.println(Thread.currentThread().getName());
          }
          }
          });
          thread.start();
          }
            總結:以上是Java實現多線程的兩種方式:繼承Thread類和Runnable接口,由于Java類的單繼承性,接口又可以實現多繼承以及使用Runnable接口可以很好地將需要執行的任務代碼與線程類分離,所以推薦使用實現Runnable接口的方法去實現多繼承。但不管怎樣最終都需要使用Thread.start()方法來使線程處于可運行狀態吐舌頭

           3、線程中start() 方法與run() 方法的區別
            1、start()方法
            調用start()方法就是為了告訴系統我這兒有一個線程已經處于可運行狀態,并沒有開始運行,如果cpu分配了時間片,那么JVM就會調用本線程的run()方法來運行線程;run()方法一旦執行結束,則本線程終止。
            2、run()方法
            run()方法只是類的一個普通方法,如果直接調用run()方法,那么程序中只會存在一個主線程,在調用run()方法以后的代碼,必須等待run()方法執行完成后才能執行,直接調用其他普通方法一樣沒有區別。
            總結:調用start()方法可以開啟一個新的線程,并在新的線程中運行run()方法;而直接調用run()方法則不會開啟新線程,run()方法還是執行于主線程中。
            4.線程的運行結果
          public static void main(String[] args)
          {
          Thread thread = new Thread(new Runnable()
          {
          //實現了Runnable接口的run()方法
          @Override
          public void run()
          {
          System.out.println("Runnable:" + Thread.currentThread().getName());
          }
          })
          {
          //繼承了Thread類  并覆蓋了Thread類的run()方法
          @Override
          public void run()
          {
          System.out.println("Thread:" + Thread.currentThread().getName());
          }
          };
          thread.start();
          }
            運行的結果為:
            總結:Thread的子類覆蓋了父類的run()方法,所以執行了子類的run()方法,在子類的run()方法中又沒有調用傳入的接口實現類的run()方法。

          posted on 2014-04-28 10:35 順其自然EVO 閱讀(148) 評論(0)  編輯  收藏


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


          網站導航:
           
          <2014年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 繁昌县| 任丘市| 蒲城县| 台东县| 沙坪坝区| 东山县| 台南市| 莱州市| 凌云县| 弥渡县| 堆龙德庆县| 洪江市| 东莞市| 茶陵县| 冷水江市| 松滋市| 宁陵县| 青田县| 手机| 冕宁县| 横山县| 烟台市| 湾仔区| 确山县| 阜新市| 双柏县| 吴江市| 台湾省| 郎溪县| 永靖县| 玉林市| 紫云| 甘南县| 钦州市| 定日县| 北票市| 广昌县| 贵溪市| 石狮市| 象山县| 龙口市|