一 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();
        }
}
View Code

相关文章:

  • 2021-06-03
  • 2021-09-06
  • 2021-11-27
  • 2022-12-23
  • 2021-11-13
  • 2021-07-28
  • 2021-08-12
猜你喜欢
  • 2022-02-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-13
  • 2021-11-24
  • 2021-10-22
相关资源
相似解决方案