Guava的使用


Guava的使用

线程池的使用

ListenableFuture是基于装饰器模式实现的

  • 示例
String nameFormat = "thread_factory_%d";
        ThreadFactory shardingThreadFactory = ShardingThreadFactoryBuilder.build(nameFormat);
        ExecutorService delegate = Executors.newCachedThreadPool(shardingThreadFactory);
        //得到装饰器的线程池
        ListeningExecutorService executorService = MoreExecutors.listeningDecorator(delegate);
        ListenableFuture<String> future = executorService.submit(() ->{
            TimeUnit.SECONDS.sleep(3);
            return "线程:"+Thread.currentThread().getName() +",休眠3s";
        });
        //注册回调函数
        future.addListener(()->{
                System.out.println("线程:"+Thread.currentThread().getName()+"执行回调函数得到返回值为:" + future.get());
        },Executors.newSingleThreadExecutor(shardingThreadFactory));

  TOC