多线程执行并从线程中取值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

相关文章
相关标签/搜索