zoukankan      html  css  js  c++  java
  • Java多线程之Future,有返回值的线程

     1 import java.util.concurrent.ExecutorService;
     2 import java.util.concurrent.FutureTask;
     3 import java.util.concurrent.TimeUnit;
     4 
     5 public class Future {
     6 
     7     public static void main(String[] args) throws Exception,InterruptedException {
     8 
     9         java.util.concurrent.FutureTask<Integer> task = new FutureTask<>(() -> {
    10             TimeUnit.MILLISECONDS.sleep(5000);
    11             return 200;
    12         });
    13 
    14         new Thread(task).start();
    15 
    16         System.out.println(task.get()); //阻塞 知道线程执行完毕返回结果
    17 
    18         ExecutorService service = java.util.concurrent.Executors.newFixedThreadPool(5);
    19         java.util.concurrent.Future<Integer> result = service.submit(() -> {
    20             TimeUnit.SECONDS.sleep(1);
    21             return 200;
    22         });
    23 
    24         System.out.println(result.isDone());
    25         System.out.println(result.isDone()); //任务执行完没有
    26         System.out.println(result.get()); //阻塞等着结果
    27         System.out.println(result.isDone());
    28 
    29         service.shutdown(); //记得关掉线程池不然Java虚拟机不会自己关闭
    30     }
    31 
    32 }
  • 相关阅读:
    Fast Member
    C++箴言:理解typename的两个含义
    网上资源工具
    WeakReference
    MonoGame教程
    The RAII Programming Idiom
    OpenGL Common Mistakes
    Finalize()、Dispose()、SafeHandle、GC
    Interop with Native Libraries
    C++计算几何库
  • 原文地址:https://www.cnblogs.com/mxh-java/p/12246583.html
Copyright © 2011-2022 走看看