java future

public class FutureMain {

    private static ExecutorService executorService = Executors.newSingleThreadExecutor();

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        Future future = executorService.submit(()->{
            int i = 0;
           while (true) {
               if(i > 10) {
                   break;
               }
               i++;
               System.out.println("single thread running.."+i);
               Thread.sleep(100);
           }
           return i;
        });
        System.out.println("Main running");
        future.get();
        System.out.println("Main end");
        executorService.shutdown();
    }
}

上面一個是future很基礎的使用;看看輸出狀況html

Main running
single thread running..1
single thread running..2
single thread running..3
single thread running..4
single thread running..5
single thread running..6
single thread running..7
single thread running..8
single thread running..9
single thread running..10
single thread running..11
Main end

submit的時候不會阻塞當前線程, 線程會繼續往下執行;java

擋調用future.get()方法時,會使得executorService裏的線程阻塞,同時有阻塞了main線程;線程

 

https://www.ibm.com/developerworks/cn/java/j-cf-of-jdk8/index.htmlcode

相關文章
相關標籤/搜索