Получить результат от callable после завершения каждой задачи

Я хотел бы получить результат от каждой вызываемой задачи, которая уже отправлена ​​​​в пул.

Eg:

  • У меня есть 5 вызываемых задач, каждая задача ждет 5 секунд

  • Я отправил задачу 5callable в фиксированный пул потоков 5

  • Должен ли я получать уведомление, если 2-я вызываемая задача завершает свою работу?

    public class MyCallable implements Callable<Result> {
    
        Result result =null;
        public MyCallable(int id, String name) {
            result=new Result(id, name);
        };
    
        @Override
        public Result call() throws Exception {
            Thread.sleep(5000);
            return result;
        }
    
        public static void main(String args[]){
            ExecutorService executor = Executors.newFixedThreadPool(10);
            List<Future<Result>> list = new ArrayList<Future<Result>>();
            Callable<Result> callable = null; 
    
            for(int i=0; i< 10; i++){
              callable = new MyCallable( i, "t"+i);
              Future<Result> future = executor.submit(callable);
              list.add(future);
            }
    
            for(Future<Result> fut : list){
              try {
                 Result res = fut.get();
                 System.out.println(new Date()+" Thread name "+res.getName() +" ID "+res.getId());
              } catch (InterruptedException | ExecutionException e) {
                 e.printStackTrace();
            }
       }
       executor.shutdown();
     }
    
    }
    
    class Result {
    
      int id;
      String name;
    
      public int getId() {
        return id;
      }
    
      public String getName() {
        return name;
      }
    
      public Result(int id, String name) {
         super();
         this.id = id;
         this.name = name;
      }
    
    }  
    

В приведенном выше примере метод future.get будет вызываться после обработки 5 потоков службой excutor.


person Amith    schedule 23.08.2016    source источник
comment
Непонятно, что вы хотите сделать. Вы хотите получать уведомления, когда каждая задача завершит свою работу или когда все будут выполнены?   -  person Slimu    schedule 23.08.2016
comment
@Slimu Я хочу получать уведомления, когда каждая задача завершает свою работу   -  person Amith    schedule 23.08.2016
comment
См. этот ответ: stackoverflow.com/questions/6346927/   -  person Slimu    schedule 23.08.2016