Java中建立線程的方法

Java中建立線程的方法

Java中建立線程主要有三種方法

  1. 從Thread繼承,並實現run方法,經過調用start()方法啓動線程的運行
  2. 建立類並實現Runnable接口,實現run方法。使用時,建立一個Thread實例,並將實現了Runnable接口的類的實例傳遞給Thread構造函數,
class RunClass implements Runnalble {
	@Override 
    public void run() {...}
}
Thread newThread = new Thread(new RunClasss());
newThread.start();

固然,這裏使用lambda表達式或者匿名類都是能夠的,道理都同樣java

//這裏實際上是不對的,框架只是給人提供了必定方便的類庫,但本質上仍是使用的上面兩種方法。 3. 利用Callable<T>接口和Future框架建立線程 剛學習Java的人對這種方法可能瞭解很少,其步驟以下: 1. 建立新類實現Callable接口,並實現call()方法,該call方法將做位線程功能的執行代碼(相似run,但run無返回值,call有返回值) 2. 建立Callable實現類的實例,使用FutureTask類來包裝Callable對象,該FutureTask對象封裝了該Callable對象的call方法的返回值 3. 使用FutureTask對象的get()方法來得到子線程執行結束後的返回值框架

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class CallableDemo implements Callable<String> {
    private final String value;
    public CallableDemo(String value) {
        this.value = value;
    }

    @Override
    public String call() {
        return value;
    }

    static public void main(String[] args) {
        FutureTask<String> ft = new FutureTask<String>(new CallableDemo("Hello"));
        Thread t = new Thread(ft);
        t.start();
        try {
            System.out.println(ft.get());//get()將阻塞直至獲得結果
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

以上代碼展現了Collable接口的使用,其與前兩種方法的主要區別就是call()有返回值,調用Future的get()方法時,將產生阻塞,直至產生結果,這個特性能夠用於後臺計算等場景。ide

相關文章
相關標籤/搜索