之前给大家分享了使用Callable+Future获取执行结果的java示例,那么下面要给大家分享的就是使用Callable+FutureTask获取执行结果的java示例,一起来看看吧。public class Test
{
public static void main(String[] args)
{
//方式1
ExecutorService executor = Executors.newCachedThreadPool();
Task task = new Task();
FutureTask futureTask = new FutureTask (task);
executor.submit(futureTask);
executor.shutdown();
//方式2,注意这种方式和第一种方式效果是类似的,只不过一个使用的是ExecutorService,一个使用的是Thread
/*Task task = new Task();
FutureTask futureTask = new FutureTask(task);
Thread thread = new Thread(futureTask);
thread.start();*/
try
{
Thread.sleep(1000);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
System.out.println("主线程在执行任务");
try
{
System.out.println("task运行结果" + futureTask.get());
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
System.out.println("所有任务执行完毕");
}
}
class Task implements Callable
{
@Override
public Integer call() throws Exception
{
System.out.println("子线程在进行计算");
Thread.sleep(3000);
int sum = 0;
for (int i = 0; i
sum += i;
return sum;
}
}
假如,是为了能够取消性而使用的Future,但是,又不能够提供可用的结果。
那么,就可以声明Future形式类型,并且返回null作为底层任务的结果。
更多的java实例,请继续来奇Q工具网了解吧。
推荐阅读: