Future與FutureTask簡單使用


  概念不多說,網上隨便百度下就可以找到一堆。直接看代碼,注意關注下運行結果中日志記錄的時間。

一,Future:

@Slf4j
public class MyFutureDemo {
    @SuppressWarnings("all")
    public static void main(String[] args) throws Exception {
        ExecutorService pool = Executors.newCachedThreadPool();
        Future<String> future = pool.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                log.info("callable execute ...");
                Thread.sleep(5000);
                return "done";
            }
        });
        log.info("execute something in main ...");
        Thread.sleep(1000);
        log.info("future is done ? {}", future.isDone());
        log.info("result: {}", future.get());
        log.info("future is done ? {}", future.isDone());
    }
}

運行結果:

 

二,FutureTask

@Slf4j
public class MyFutureTaskDemo {
    @SuppressWarnings("all")
    public static void main(String[] args) throws Exception {
        ExecutorService threadPool = Executors.newCachedThreadPool();
        FutureTask<String> futureTask = new FutureTask<String>(new Callable() {
            @Override
            public Object call() throws Exception {
                log.info("callable execute ...");
                Thread.sleep(5000);
                return "done";
            }
        });
        threadPool.submit(futureTask);
        log.info("execute something in main ...");
        Thread.sleep(1000);
        log.info("future is done ? {}", futureTask.isDone());
        log.info("result: {}", futureTask.get());
        log.info("future is done ? {}", futureTask.isDone());
    }
}

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM