callable
public interface Callable<V>
返回結果并且可能拋出異常的任務。實現者定義了一個不帶任何參數的叫做 call 的方法。 此方法返回計算結果,并拋出經過檢查的異常
與Runnable相似,但是Runnable不返回計算結果,且不拋異常
void
run()
使用實現接口Runnable
的對象創建一個線程時,啟動該線程將導致在獨立執行的線程中調用對象的run
方法。
V
call()
計算結果,如果無法計算結果,則拋出一個異常。
通過callable 和Runnable構建FutureTask任務,調用run()方法獲得計算結果,并輸出
package com.google.minatest.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import com.google.minatest.entity.Message; public class FutureTaskStudy { FutureTask<Message> future = null; public static void main(String[] args) { try { new FutureTaskStudy().test(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } public void test() throws InterruptedException, ExecutionException { future = new FutureTask<Message>(new CallableImpl()); future.run(); System.out.println(future.get()); future = new FutureTask<Message>(new RunnableImpl(), null); future.run(); System.out.println(future.get()); } private class CallableImpl implements Callable<Message> { public Message call() throws Exception { return new Message(); } } private class RunnableImpl implements Runnable { public void run() { new Message(); } } }