ゞ沉默是金ゞ

          魚離不開水,但是沒有說不離開哪滴水.
          posts - 98,comments - 104,trackbacks - 0
          Future<T> submit(Callable<T> c)
          Today in next part of the series we will talk about submission of callable task via executor service. 

          As per JAVA version 6.0, ExecutorService Interface has following method -
          Future< T >  submit( callable c )
          1. Submits a Callable task for execution and returns a Future representing that task computation.
          2. Future< T > will return T on successful completion of the process, otherwise result will not be T.
          Lets start with Callable task - As we  know that Callable<T> interface has following method - public T call()
          So when we say - ExecutorService.submit(Callable Task) --> It starts a new stack starting with call method of callable task, as call method can return T so does future object. Due to this reason the signature of submit(Callable c) is Future< T >.
          T --> means anything that extends Object.
          package com.jovialjava.blog.threads;

          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;


          public class CallableExample {

              
          private static final ExecutorService executorPool=Executors.newFixedThreadPool(2);
              
              
          public static void main(String[] args) {
                  CallableTask_1 task_1 
          = new CallableTask_1();
                  CallableTask_2 task_2 
          = new CallableTask_2();
                  
                  
          /**
                   * Submit the first task
                   
          */
                  Future
          <Boolean> fut_1 = executorPool.submit(task_1);
                  Future
          <Boolean> fut_2 = executorPool.submit(task_2);
                  
                  
          try{
                      
          if(fut_1.get()){
                          System.out.println(
          "TASK 1 completed SUCCESSFULLY");
                      }
                      
          if(fut_2.get()){
                          System.out.println(
          "TASK 2 completed SUCCESSFULLY");
                      }
                  }
          catch(ExecutionException e){            
                      System.out.println(e.getMessage());
                  }
          catch(InterruptedException e){
                      System.out.println(e.getMessage());
                  }
          finally{
                      
          /**====VERY IMPORTANT===
                       * This is required to stop the executor pool to
                       * stop accepting new request.
                       
          */
                      executorPool.shutdown();
                  }

              }

              
              
          /**
               * This task will complete successfully
               
          */
              
          public static class CallableTask_1 implements Callable<Boolean>{
                  
          public Boolean call()throws NullPointerException{
                      System.out.println(
          "Hi, Inside Callable Task 1");
                      
          return true;
                  }        

              }
              
              
          /**
               * This task will result in error.
               
          */
              
          public static class CallableTask_2 implements Callable<Boolean>{
                  
          public Boolean call()throws NullPointerException{
                      System.out.println(
          "Hi, Inside Callable Task 2");
                      
          throw new IllegalStateException("Callable Task Exception");
                  }        

              }
          }
          posted on 2012-08-06 10:35 ゞ沉默是金ゞ 閱讀(802) 評論(0)  編輯  收藏 所屬分類: Java SE
          主站蜘蛛池模板: 肇州县| 潞西市| 昌宁县| 乌鲁木齐县| 敖汉旗| 大安市| 临夏县| 满城县| 昆明市| 乌什县| 鱼台县| 五大连池市| 洪雅县| 金平| 永宁县| 柏乡县| 延寿县| 闽清县| 巴彦县| 肥西县| 平和县| 长海县| 鱼台县| 安庆市| 宣化县| 综艺| 专栏| 平舆县| 连云港市| 乳源| 岑巩县| 顺昌县| 博湖县| 新郑市| 通榆县| 邹城市| 北流市| 余干县| 侯马市| 广汉市| 百色市|