一 Future(jdk5引入)
简介: Future接口是Java多线程Future模式的实现,可以来进行异步计算。
可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算完成返回结果,也可以使用cancel方法停止任务的执行。
简单测试 - 主题 : Future模式可以理解成:我有一个任务,提交给了Future,Future替我完成这个任务,期间程序可以处理其他任务。
一段时间之后,主线程可以从Future那儿取出结果。
public class ThreadPoolTest { private static Logger logger= LoggerFactory.getLogger(ThreadPoolTest.class); public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor();//创建单一线程 Future<String> future = threadPool.submit(new Callable<String>() { @Override public String call() throws Exception { Thread.sleep(2000); logger.info("out2-----"); return "Hello world"; } }); try { try { BigDecimal bigDecimal=new BigDecimal(0); logger.info("out1:"+bigDecimal.toString()); logger.info(future.get(3000,TimeUnit.MILLISECONDS));//Hello world } catch (TimeoutException e) { logger.error("timeout-exception",e); } } catch (InterruptedException e) { logger.error("interrupted-exception",e); } catch (ExecutionException e) { logger.error("execution-exception",e); }finally { threadPool.shutdown(); } }