Java創建線程的三種方法比較


一般有三種方法,Thread,Runnable,Callable.
Runnable和Callable的區別
    (1)Callable規定的方法是call(),Runnable規定的方法是run().
  (2)Callable的任務執行后可返回值,而Runnable的任務是不能返回值得
  (3)call方法可以拋出異常,run方法不可以
  (4)運行Callable任務可以拿到一個Future對象,表示異步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並檢索計算的結果。通過Future對象可以了解任務執行情況,可取消任務的執行,還可獲取執行結果。

**通過實現Runnable接口來創建Thread線程:
步驟1:創建實現Runnable接口的類:
class SomeRunnable implements Runnable
  {
  public void run()
  {
  //do something here
  }
  }
步驟2:創建一個類對象:
  Runnable oneRunnable = new SomeRunnable();
步驟3:由Runnable創建一個Thread對象:
  Thread oneThread = new Thread(oneRunnable);
步驟4:啟動線程:
  oneThread.start();
注釋:線程的執行流程很簡單,當執行代碼oneThread.start();時,就會執行oneRunnable對象中的void run();方法,該方法執行完成后,線程就消亡了。

**通過實現Callable接口來創建Thread線程:
與方法1類似,通過實現Callable接口來創建Thread線程:其中,Callable接口(也只有一個方法)定義如下:
  Java代碼:
  public interface Callable
  {
  V call() throws Exception;
  }
  步驟1:創建實現Callable接口的類SomeCallable(略);
  步驟2:創建一個類對象:
  Callable oneCallable = new SomeCallable();
  步驟3:由Callable創建一個FutureTask對象:
  FutureTask oneTask = new FutureTask(oneCallable);
  注釋:FutureTask是一個包裝器,它通過接受Callable來創建,它同時實現了
  Future和Runnable接口。
  步驟4:由FutureTask創建一個Thread對象:
  Thread oneThread = new Thread(oneTask);
  步驟5:啟動線程:
  oneThread.start();
  至此,一個線程就創建完成了。

**通過繼承Thread類來創建一個線程:
步驟1:定義一個繼承Thread類的子類:
  Java代碼:
  class SomeThead extends Thraad
  {
  public void run()
  {
  //do something here
  }
  }
  步驟2:構造子類的一個對象:
  SomeThread oneThread = new SomeThread();
  步驟3:啟動線程:
  oneThread.start();
  至此,一個線程就創建完成了。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM