1.FutureTask类
作用:FutureTask类是Future接口的一个实现类。其作用在于取消异步计算。FutureTask提供了对Future的基本实现,可以调用方法去开始和取消一个计算,可以查询计算是否完成并且获取计算结果。只有当计算完成时才能获取到计算结果,一旦计算完成,计算将不能被重启或者被取消,除非调用runAndReset方法。实现了Future接口和Runnable接口,因此FutureTask交由Executor执行,也可以直接用线程调用执行(futureTask.run())。
2. Callable接口和Runnable接口有什么不同?
2.1 Callable可以返回一个类型V,而Runnable不可以
2.2 Callable能够抛出checked exception,而Runnable不可以。
2.3 Runnable是自从java1.1就存在,而Callable是1.5之后才加上去的。
2.4 Callable和Runnable都可以应用于executors。而Thread类只支持Runnable。
3.volatile关键字的作用
3.1 保证可见性,不保证原子性
3.2 禁止指令重排