FutureTask的使用
2015-08-02 10:26
351 查看
FutureTask的使用
实现Callable接口
public class MyCalbale implements Callable<String>{ @Override public String call() throws Exception { // 在这里可以执行网络请求 Log.e("emi", "MyCalbale --> call"); return "call method"; } }
继承FutureTask类,并接受一个实现了Callable接口的类
public class MyFutureTask extends FutureTask<String>{ public MyFutureTask(Callable<String> callable) { super(callable); } @Override public void run() { // 由于FutureTask实现了Runnable接口,所以这里也有一个run方法 super.run(); Log.e("emo", "MyFutureTask --> run"); } @Override public boolean cancel(boolean mayInterruptIfRunning) { // 这个方式是用来取消正在执行或是为执行的FutureTask // 已经执行完的,都返回false return super.cancel(mayInterruptIfRunning); } @Override protected void done() { // FutureTask的任务已经执行完成 super.done(); Log.e("emo", "MyFutureTask --> done"); try { // 同个get方法可以获取,通过执行call()方法所返回的结果 Log.e("emo", "get()=" + get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
通过ThreadPoolExecutor去运行FutureTask
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( poolSize, MAXIMUM_POOL_SIZE, KEEP_ALIVE, TimeUnit.SECONDS, blockQueue, threadFactory); MyCalbale myCalbale = new MyCalbale(); MyFutureTask myFutureTask = new MyFutureTask(myCalbale); /* 方法的调用顺序 * 1、先调用Callable接口中的call()方法 * 2、之后调用FutureTask类的done()方法 * 3、最后调用FutureTask类的run()方法 */ threadPoolExecutor.execute(myFutureTask);
相关文章推荐
- 并发编程--在执行器中控制任务的完成
- 关于java线程池的研究-Future与FutureTask
- Java并发编程:Callable、Future和FutureTask
- java并发编程-Future与FutureTask
- java Future FutureTask 并发操作
- Future和FutureTask实现异步计算 推荐
- java并发callable,runnable,future和futureTask
- 更好地理解与使用Future
- Java并发编程高级篇(九):在线程之行结束后再做些什么
- Android并发二三事之Callable,Future,FutureTask
- Android线程池(九) Runnable、Callable、Executor、Future、FutureTask关系解读
- java多线程之Future和FutureTask
- Future, FutureTask的作用和差异
- Java多线程 -- JUC包源码分析13 -- Callable/FutureTask源码分析
- Java同步工具类——FutureTask
- 使用DelayQueue 和 FutureTask 实现java中的缓存
- FutureTask 源码分析
- Java并发编程:Callable、Future和FutureTask
- java的FutureTask的public 方法的解析
- Java并发编程:Callable、Future和FutureTask