之前給大家分享了使用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工具網了解吧。
推薦閱讀: