<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ゞ沉默是金ゞ

    魚離不開水,但是沒有說不離開哪滴水.
    posts - 98,comments - 104,trackbacks - 0
    Future<T>:
    A Future represents the result of an asynchronous computation. Future has been provide with some really powerful methods. For Instance -
    1) We can check whether a task has been completed or not.
    2) We can cancel a task.
    3) Check whether task was cancelled or complete normally.


    Methods-


    boolean cancel(boolean mayInterruptIfRunning)
    This method does following -
    1) If the process(Thread) has not started, then cancel the thread.
    2) If the process has started, then check if 
    mayInterruptIfRunning = true ==> Inturrept the thread and cancel it
    mayInterruptIfRunning = false ==> Let it run
    This attempt will fail if the task has already completed, has already been cancelled, or could not be cancelled for some other reason.
    After this method returns, subsequent calls to isDone() will always return true.
    Subsequent calls to isCancelled() will always return true if this method returned true.


    boolean isCancelled()
        Returns true if this task was cancelled before it completed normally


    V get() throws InterruptedException, ExecutionException
    This method is a blocking call. It will cause JVM to wait if necessary for the computation to complete, and then retrieves its result.


    boolean isDone()
        Returns true if this task completed. Completion may be due to normal termination, an exception, or cancellation - in all of these cases, this method will return true.

    package com.jovialjava.blog.threads;

    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;

    public class FutureExample {
        
    /**
         * Executor pool is a new concept in JAVA 5+, it can help to release 
         * a thread. It maintains a pool of threads, It reuses them, also align them in 
         * a queue. Here we are creating pool of 1 thread.
         
    */
        
    private static final ExecutorService executorPool=Executors.newFixedThreadPool(5);
        
        
    public static void main(String args){
            CallableTask call 
    = new CallableTask();        
            
    try{
                
    /**
                 * Future<T> is result of asynchronous computation.
                 * It may possible that CallableTask has not started yet
                 * but 'ExecutorService' gives the result via Future
                 * Object.
                 
    */
                Future
    <String> future = executorPool.submit(call);
                
    /**
                 * We can check if CallableTask has been completed.
                 
    */
                System.out.println(
    "Status of Callable Task [Is Completed ? "+ future.isDone()+ "]");
                
    /**
                 * We can get the result of callable Task.
                 * Note : future.get() is a blocking call, It will wait until the associated process finishes.
                 
    */
                System.out.println(
    "Result of callable task ["+ future.get()+"]");
                
    /**
                 * We can cancel the task.
                 
    */
                System.out.println(
    "Trying to cancel the task [Is Cancelled ? "+ future.cancel(false)+ "]");
                
    /**
                 * We can see if the task was canceled.
                 * Returns true if this task was canceled before it completed normally
                 
    */
                System.out.println(
    "Was task canceled before normal complition ? -"+ future.isCancelled());
                
                
            }
    catch(Exception e){
                e.printStackTrace();
            }
    finally{
                executorPool.shutdownNow();
            }
            
        }

        
        
    /*
         *Callable<V> is defined as Callable<String>
         *
         
    */
        
    public static class CallableTask implements Callable<String>{
                    
            
    public String call( ){
                System.out.println(
    "Inside CALLABLE TASK");
                
    return "~~JOVIAL JAVA~~";
            }
        }    
    }
    posted on 2012-08-06 10:28 ゞ沉默是金ゞ 閱讀(774) 評論(0)  編輯  收藏 所屬分類: Java SE
    主站蜘蛛池模板: 日本一区免费电影| 青青视频观看免费99| 亚洲欧洲国产成人综合在线观看 | 亚洲高清视频免费| 久久久久亚洲AV片无码下载蜜桃| 免费观看91视频| 亚洲日本在线观看| 色播精品免费小视频| 亚洲人成77777在线观看网| 女人让男人免费桶爽30分钟| 亚洲AV色欲色欲WWW| 亚洲国产精品无码久久久久久曰| 日本一区二区三区在线视频观看免费 | 精品熟女少妇aⅴ免费久久| 亚洲爽爽一区二区三区| 中文字幕版免费电影网站| 久久精品视频亚洲| 亚欧人成精品免费观看| 亚洲一本到无码av中文字幕| 国产成人免费a在线视频色戒| 免费人成大片在线观看播放| 久久亚洲国产欧洲精品一| 最近2019免费中文字幕6| 亚洲人成无码网站在线观看| 午夜亚洲福利在线老司机| 中国一级特黄高清免费的大片中国一级黄色片 | 成人毛片免费观看视频大全| 狠狠综合亚洲综合亚洲色| 国产亚洲精品线观看动态图| 美丽姑娘免费观看在线观看中文版 | 亚洲熟妇无码av另类vr影视| 亚洲综合久久夜AV | 51在线视频免费观看视频| 亚洲国产一区二区三区在线观看| 亚洲国产精品专区在线观看| 国产成人AV片无码免费| 亚洲欧美aⅴ在线资源| 精品亚洲永久免费精品| 妞干网免费观看视频| 免费无码av片在线观看| 亚洲日韩AV一区二区三区四区|