线程类Runnable是没有返回结果的,如果想要得到线程的计算结果可以使用Callable类。FutureTask类实现了RunnableFuture接口, RunnableFuture接口继承了Runnable和Future接口。JAVA中可以使用ExecutorService配合Future接口来实现异步计算。
简单的FutureTask+Thread获得线程的计算结果代码如下
csharp;gutter:true;
public static void main(String[] args)
{</p>
<pre><code> FutureTask task = new FutureTask(new Callable()
{
public Integer call() throws Exception
{
TimeUnit.SECONDS.sleep(5);
int sum = 0;
for (int i = 0; i < 10000; i++)
{
sum += i;
}
return sum;
}
});
Thread thread = new Thread(task);
thread.start();
try
{
// get 方法会阻塞线程,直到拿到结果
Integer result = task.get();
System.out.println("我是结果:" + result);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
System.out.println("最后打印.....");
</code></pre>
<p>}
结果:
我是结果:49995000
最后打印…..
Original: https://www.cnblogs.com/foxting/p/12523094.html
Author: KenNgai
Title: FutureTask+Thread获得线程的计算结果
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540004/
转载文章受原作者版权保护。转载请注明原作者出处!