java futuretask 实例_java 使用Callable+FutureTask获取执行结果
之前給大家分享了使用Callable+Future獲取執(zhí)行結(jié)果的java示例,那么下面要給大家分享的就是使用Callable+FutureTask獲取執(zhí)行結(jié)果的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,注意這種方式和第一種方式效果是類似的,只不過一個(gè)使用的是ExecutorService,一個(gè)使用的是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("主線程在執(zhí)行任務(wù)");
try
{
System.out.println("task運(yùn)行結(jié)果"?+?futureTask.get());
}
catch?(InterruptedException?e)
{
e.printStackTrace();
}
catch?(ExecutionException?e)
{
e.printStackTrace();
}
System.out.println("所有任務(wù)執(zhí)行完畢");
}
}
class?Task?implements?Callable?
{
@Override
public?Integer?call()?throws?Exception
{
System.out.println("子線程在進(jìn)行計(jì)算");
Thread.sleep(3000);
int?sum?=?0;
for?(int?i?=?0;?i?
sum?+=?i;
return?sum;
}
}
假如,是為了能夠取消性而使用的Future,但是,又不能夠提供可用的結(jié)果。
那么,就可以聲明Future形式類型,并且返回null作為底層任務(wù)的結(jié)果。
更多的java實(shí)例,請(qǐng)繼續(xù)來奇Q工具網(wǎng)了解吧。
推薦閱讀:
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java futuretask 实例_java 使用Callable+FutureTask获取执行结果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么用户在注册时需要使用邮箱或手机号作
- 下一篇: Django Model设计详解