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

相关文章
相关标签/搜索