guava 并发

概念

        ListenableFuture顾名思义就是能够监听的Future,它是对java原生Future的扩展加强。咱们知道Future表示一个异步计算任务,当任务完成时能够获得计算结果。若是咱们但愿一旦计算完成就拿到结果展现给用户或者作另外的计算,就必须使用另外一个线程不断的查询计算状态。这样作,代码复杂,并且效率低下。使用ListenableFuture Guava帮咱们检测Future是否完成了,若是完成就自动调用回调函数,这样能够减小并发程序的复杂度。java

代码:并发

import com.google.common.util.concurrent.*;
import java.util.concurrent.*;
/**
 * Created by admin on 2016/4/27.
 */
public class ExcutorEngineTest {
    public static void main(String[] args) throws Exception {
        ListeningExecutorService executorService = MoreExecutors
            .listeningDecorator(MoreExecutors
                .getExitingExecutorService(new ThreadPoolExecutor(10, 100,
                    3000, TimeUnit.MILLISECONDS,
                    new LinkedBlockingQueue<Runnable>())));
        ListenableFuture<Integer> future = executorService.submit(new Task("test"));
        System.out.println("future:" + future.get());
        Futures.addCallback(future, new FutureCallback<Integer>() {
            @Override
            public void onSuccess(Integer result) {
                System.out.println("result" + result);
            }
            @Override
            public void onFailure(Throwable t) {
                System.err.println("error");
            }
        });
    }
    static class Task implements Callable<Integer>{
        String str;
        public Task(String str){
            this.str = str;
        }
        @Override
        public Integer call() throws Exception {
            System.out.println("call excute...." + str);
            return 8;
        }
    }
}

--------------------异步

执行结果:ide

call excute....test函数

future:8this

result8google

相关文章
相关标签/搜索