• Future.get(并发之从任务中产生返回值)


    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    /**
     * 如果你想在任务返回后带一个返回值,可以实现Callable接口<br>
     * executorService.submit返回带结果的future对象[执行了call方法后返回]<br>
     * 调用get会一直阻塞直到结果返回
     * 
     * @date:2018年6月26日
     * @author:zhangfs
     * 
     * 
     */
    public class CallableDemo implements Callable<String> {
    
        private int id;
    
        public CallableDemo(int id) {
            this.id = id;
        }
    
        public static void main(String[] args) {
            ExecutorService executorService = Executors.newCachedThreadPool();
            List<Future<String>> results = new ArrayList<Future<String>>();
            for (int i = 0; i < 10; i++) {
                results.add(executorService.submit(new CallableDemo(i)));
            }
            for (Future<String> future : results) {
                try {
                    System.out.println(future.get());
                } catch (InterruptedException | ExecutionException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } finally {
                    executorService.shutdown();
                }
            }
        }
    
        @Override
        public String call() throws Exception {
            // TODO Auto-generated method stub
            return "Result of CallableDemo is " + id;
        }
    }
  • 相关阅读:
    HDU 1198
    HDU 1863
    HDU 1879
    HDU 1233
    HDU 1232
    HDU 1829
    HDU 2473
    hdu 1829 A Bug's Life
    hdu 3038 How Many Answers Are Wrong
    hdu 1198 Farm Irrigation
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/9230556.html
Copyright © 2020-2023  润新知