多線程執行並從線程中取值FutureTask&Callable

   Thread實現了Runnable接口中的run方法,可是run方法是沒有返回值滴!! java

public abstract void run(); 測試

若是但願獲得線程的返回值,能夠實現Callable接口,調用call 方法: spa

V call() throws Exception; 線程

這裏就來分享一種實現。 對象

類之間的關係以下圖所示: 接口

測試代碼: get

package com.xue.gang;


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


/**
 * 只是測試用FutureTask中取到值
 * */
public class FutureTaskRunner {
public static void main(String[] args) throws InterruptedException, ExecutionException{
/**構造可獲取結構的Runable對象*/

FutureTask futureTask = new FutureTask<Object>(new Callable(){
public Object call() throws Exception{
int sum=0;
for(int i =0;i<100;i++){
sum +=i;
System.out.println("index is : " + i);
}
return  sum;
}
});
/**啓個線程來執行*/
Thread thread=new Thread(futureTask);
thread.start();
/**執行完了把線程中的值拿回來*/
System.out.println("執行完了把線程中的值拿回來:" + futureTask.get());
}
}
io

相關文章
相關標籤/搜索