首页 > 代码库 > FutureTask类
FutureTask类
FutureTask类是Future 的一个实现,并实现了Runnable,所以可通过Executor(线程池)来执行,也可传递给Thread对象执行。
Executor框架利用FutureTask来完成异步任务,并可以用来进行任何潜在的耗时的计算。
一般FutureTask多用于耗时的计算,主线程可以在完成自己的任务后,再去获取结果。
/** * Created with IntelliJ IDEA. * User: 菜鸟大明 * Date: 14-10-23 * Time: 下午7:02 * To change this template use File | Settings | File Templates. */ public class MyCallable1 implements Callable { @Override public Object call() throws Exception { System.out.println("call"); return "end"; } public static void main(String[] args) throws ExecutionException, InterruptedException { MyCallable1 myCallable1 = new MyCallable1(); FutureTask fk = new MyFutureTask(myCallable1); // 它可以通过Thread包装来直接执行, // Thread thread = new Thread(fk); // thread.start(); // 也可以提交给ExecuteService来执行, // ExecutorService exec = Executors.newCachedThreadPool(); // Future<String> future = exec.submit(myCallable1); // 并且还可以通过v get()返回执行结果, // 在线程体没有执行完成的时候,主线程一直阻塞等待,执行完则直接返回结果。 fk.run(); System.out.println(fk.get()); } } class MyFutureTask extends FutureTask { public MyFutureTask(Callable callable) { super(callable); } // 当线程运行结束,则运行done方法。 @Override public void done() { // 此处一般用来计算任务运行耗时解析。 System.out.println("done"); } }
FutureTask类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。