![1eff593656487b1156389c3682b496f8.png](https://img-blog.csdnimg.cn/img_convert/1eff593656487b1156389c3682b496f8.png)
Java多线程常用类总结:FutureTask、CountDownLatch、CyclicBarrier
Future用法
使用线程池,常用的是ThreadPoolExecutor的execute()方法,但该方法无法返回结果。那如何获取结果?就用到了submit()方法和Future接口。
ThreadPoolExecutor的submit()方法继承于抽象父类AbstractExecutorService,父类中提供了三种实现,如下图。返回都是Future接口,但第一种情况没有返回值。
![5233f4941f661da2ebcde2850d1fab28.png](https://img-blog.csdnimg.cn/img_convert/5233f4941f661da2ebcde2850d1fab28.png)
Future接口如下图,可以查看任务是否取消,是否完成,执行取消任务操作。通过get()方法获取结果,支持超时机制。需注意get()方法为同步方法,若任务没执行完,线程会阻塞,进入WAITING状态。