1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Java如何創(chuàng)建子線程

      這篇文章主要為大家展示了Java如何創(chuàng)建子線程,內(nèi)容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

      創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、做網(wǎng)站與策劃設(shè)計,肇州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:肇州等地區(qū)。肇州做網(wǎng)站價格咨詢:13518219792

      摘要:

      其實兩種方法歸結(jié)起來看還是一種,都是利用Thread的構(gòu)造器進行創(chuàng)建,區(qū)別就是一種是無參的,一種是有參的。

      一、繼承Thread線程類:

      通過繼承Thread類,重寫run方法,子類對象就可以調(diào)用start方法啟動線程,JVM就會調(diào)用此線程的run方法。
      代碼如下:

      public class MyThread extends Thread {
        public MyThread() { 
          super(); 
        }
          @Override
          public void run() { 
        }
          // 線程執(zhí)行結(jié)束
          System.out.println("執(zhí)行完成! " + getName());
        }
      }
      
      public class HelloWorld {
      public static void main(String[] args) {
        // 創(chuàng)建線程t1
        Thread t1 = new MyThread(); ①
        // 開始線程t1
        t1.start();
      }
      }

      注意: 如果直接調(diào)用run方法,程序只會按照順序執(zhí)行主線程這一個線程。不會創(chuàng)建一個線程。

      public class HelloWorld {
      public static void main(String[] args) {
        // 創(chuàng)建線程t1
        Thread t1 = new MyThread(); ①
        // 開始線程t1
        t1.run();
      }
      }

      二、實現(xiàn)Runnable接口:

      因為Thread類實現(xiàn)了Runnable接口,我們可以直接實現(xiàn)Runnable,然后通過Thread(Runnable target)來創(chuàng)建線程。

      //線程執(zhí)行對象
      public class Runner implements Runnable { 
          // 編寫執(zhí)行線程代碼
          @Override
          public void run() { 
          }
          // 線程執(zhí)行結(jié)束
          System.out.println("執(zhí)行完成! " + Thread.currentThread().getName());
        }
      }
      
      public class HelloWorld {
        public static void main(String[] args) {
          // 創(chuàng)建線程t1,參數(shù)是一個線程執(zhí)行對象Runner
          Thread t1 = new Thread(new Runner()); 
          // 開始線程t1
          t1.start(); 
        }
      }

      注意: (1)實現(xiàn)Runnable接口,就不能調(diào)用Thread類的方法了,但是可以通過Thread.currentThread()進行調(diào)用。
      (2)可能有的人很好奇,thread.start();為什么調(diào)用我們實現(xiàn)Runnable類的run方法,而不是Thread類的run方法。這就要從源碼分析了:

      //Thread的run方法,調(diào)用target.run()
      public void run() {
          if (target != null) {
            target.run();
          }
       }
       //Thread的構(gòu)造器
      public Thread(Runnable target) {
          init(null, target, "Thread-" + nextThreadNum(), 0);
      }

      Thread類的構(gòu)造器會調(diào)用init方法,會把我們傳過去的Runnable對象賦值給Thread類的target,所以target.run()就是我們實現(xiàn)Runnable類,調(diào)用重寫的run方法。

      private Runnable target;

      二、比較創(chuàng)建線程的兩種方法:

      開發(fā)中:優(yōu)先選擇,實現(xiàn)Runnable接口的方式

      原因:(1)實現(xiàn)的方式?jīng)]有類的單繼承的局限性

      (2)實現(xiàn)的方式更適合來處理多個線程共享數(shù)據(jù)的情況。

      聯(lián)系: Thread實現(xiàn)了Runnable

      相同點: 兩者都需要重寫run()。

      以上就是關(guān)于Java如何創(chuàng)建子線程的內(nèi)容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。


      新聞標題:Java如何創(chuàng)建子線程
      當前鏈接:http://www.ef60e0e.cn/article/pscsii.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        霸州市| 浪卡子县| 镇原县| 鞍山市| 峨眉山市| 陆河县| 呈贡县| 治县。| 兴城市| 睢宁县| 尉犁县| 会宁县| 诸暨市| 灵石县| 商水县| 常熟市| 甘肃省| 屯留县| 通道| 鹤峰县| 固始县| 广宁县| 闽侯县| 道真| 临邑县| 理塘县| 曲麻莱县| 平泉县| 疏勒县| 南华县| 蒲江县| 崇明县| 和田县| 鹿泉市| 尉氏县| 桂阳县| 白银市| 禹城市| 呼图壁县| 和林格尔县| 西平县|