Future simple to use and FutureTask

  The concept much to say, just Baidu online and you can find a bunch. Direct look at the code, attention to concerns expressed at run time results in logging.

一,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());
    }
}

operation result:

 

二,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());
    }
}

operation result:

 

Guess you like

Origin www.cnblogs.com/enchaolee/p/11447136.html