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 }
  • 相关阅读:
    iOS App之间跳转
    iOS 编码转换
    iOS文件类型判断
    iOS 运行时
    libqrencode生成二维码
    设置app的启动图
    根据字体计算CGRect
    iOS 英文学习
    libev 中IO事件循环解析
    libev 默认事件循环初始化的解析
  • 原文地址:https://www.cnblogs.com/mxh-java/p/12246583.html
Copyright © 2011-2022 走看看