• 招生咨詢熱線:4008-569-579 
  • 手機(jī)版
    用手機(jī)掃描二維碼直達(dá)商品手機(jī)版
招生咨詢熱線
4008-569-579
機(jī)構(gòu)主頁 > 培訓(xùn)資料 > 實(shí)現(xiàn)java多線程的方法都有哪些呢
機(jī)構(gòu)主頁 > 培訓(xùn)資料>實(shí)現(xiàn)java多線程的方法都有哪些呢

實(shí)現(xiàn)java多線程的方法都有哪些呢

來源:廣州達(dá)內(nèi)教育        時(shí)間:2023-05-30        熱度:36℃        返回列表

   實(shí)現(xiàn)java多線程的方式都有哪些呢?這個(gè)問題是在我們達(dá)內(nèi)科技的java培訓(xùn)班的學(xué)員會(huì)經(jīng)常問到的問題,我們的講師也根據(jù)同學(xué)們的問題做出了相對(duì)應(yīng)的回答。達(dá)內(nèi)科技的小編相信肯定也有很多在學(xué)習(xí)java的學(xué)員肯定也會(huì)遇到這樣的問題,下面達(dá)內(nèi)科技的小編就把我們的java講師的回答整理出來給大家。

  1、繼承Thread類實(shí)現(xiàn)多線程


  繼承Thread類的方法盡管被我列為一種多線程實(shí)現(xiàn)方式,但Thread本質(zhì)上也是實(shí)現(xiàn)了Runnable接口的一個(gè)實(shí)例,它代表一個(gè)線程的實(shí)例,并且,啟動(dòng)線程的方法就是通過Thread類的start()實(shí)例方法。start()方法是一個(gè)native方法,它將啟動(dòng)一個(gè)新線程,并執(zhí)行run()方法。這種方式實(shí)現(xiàn)多線程很簡(jiǎn)單,通過自己的類直接extend

Thread,并復(fù)寫run()方法,就可以啟動(dòng)新線程并執(zhí)行自己定義的run()方法。例如:


  [java] view plain copypublic class MyThread extends Thread {


  public void run() {


  System.out.println("MyThread.run()");


  }


  }


  在合適的地方啟動(dòng)線程如下:


  [java] view plain copyMyThread myThread1 = new MyThread();


  MyThread myThread2 = new MyThread();


  myThread1.start();


  myThread2.start();


  2、實(shí)現(xiàn)Runnable接口方式實(shí)現(xiàn)多線程


  如果自己的類已經(jīng)extends另一個(gè)類,就無法直接extends Thread,此時(shí),必須實(shí)現(xiàn)一個(gè)Runnable接口,如下

  [java] view plain copypublic class MyThread extends OtherClass implements

Runnable {


  public void run() {


  System.out.println("MyThread.run()");


  }


  }


  為了啟動(dòng)MyThread,需要首先實(shí)例化一個(gè)Thread,并傳入自己的MyThread實(shí)例:


  [java] view plain copyMyThread myThread = new MyThread();


  Thread thread = new Thread(myThread);


  thread.start();


  事實(shí)上,當(dāng)傳入一個(gè)Runnable

target參數(shù)給Thread后,Thread的run()方法就會(huì)調(diào)用target.run(),參考JDK源代碼:


  [java] view plain copypublic void run() {


  if (target != null) {


  target.run();


  }


  }


  3、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程


  ExecutorService、Callable、Future這個(gè)對(duì)象實(shí)際上都是屬于Executor框架中的功能類。

這里面對(duì)該框架做了很詳細(xì)的解釋。返回結(jié)果的線程是在JDK1.5中引入的新特征,確實(shí)很實(shí)用,有了這種特征我就不需要再為了得到返回值而大費(fèi)周折了,而且即便實(shí)現(xiàn)了也可能漏洞百出。


  以上就是我們java培訓(xùn)講師給大家的答案了,如果說你想要學(xué)習(xí)java語言的話,那么達(dá)內(nèi)科技?xì)g迎大家來我們公司的java培訓(xùn)班進(jìn)行實(shí)地考察,也可以點(diǎn)擊我們文章下面的獲取試聽資格按鈕來獲取我們的java課程免費(fèi)試聽資格,在試聽中可以更加深入的了解我們達(dá)內(nèi)科技。

電話咨詢

電話咨詢

咨詢電話:
4008-569-579
回到頂部

回到頂部