• 13.FutureTask异步计算


    FutureTask

        1.可取消的异步计算,FutureTask实现了Future的基本方法,提供了start、cancel 操作,可以查询计算是否完成,并且可以获取计算
        的结果。结果只可以计算完成之后去获取,get方法会阻塞当前计算没有完成的线程,一定计算完成则会立即释放。

    线程池submit与execute

        1.submit()可以传入参数为实现callable接口的实例,返回future实例对象。
        2.execute()返回void。
    1. package demo2;
    2. import java.util.concurrent.*;
    3. /**
    4. * Created by liudan on 2017/7/31.
    5. */
    6. public class DemoFuture implements Callable<String> {
    7. public String name;
    8. public DemoFuture(String name) {
    9. this.name = name;
    10. }
    11. @Override
    12. public String call() throws Exception {
    13. Thread.sleep(3000);
    14. String r = this.name+" 任务处理 success";
    15. return r;
    16. }
    17. public static void main(String[] args) throws ExecutionException, InterruptedException {
    18. FutureTask<String> futureTask1 = new FutureTask<String>(new DemoFuture("订单1"));
    19. FutureTask<String> futureTask2 = new FutureTask<String>(new DemoFuture("订单2"));
    20. ExecutorService executorService = Executors.newFixedThreadPool(2);
    21. Future future1 = executorService.submit(futureTask1);
    22. Future future2 = executorService.submit(futureTask2);
    23. System.out.println("请求完毕...");
    24. try {
    25. System.out.println("处理中...");
    26. Thread.sleep(2000);
    27. } catch (InterruptedException e) {
    28. e.printStackTrace();
    29. }
    30. System.err.println("over:"+futureTask1.get().toString());
    31. System.err.println("over:"+futureTask2.get().toString());
    32. //futureTask1.get()方法,假如get不到,则一直等待阻塞自己的线程。
    33. executorService.shutdown();
    34. }
    35. }
    36. 输出:
    37. 请求完毕... 处理中... over:订单1 任务处理 success over:订单2 任务处理 success



  • 相关阅读:
    Mac下持续集成-查看占用的端口及kill
    windons模拟linux终端工具----cmder
    windows中使用django时报错:A server error occurred. Please contact the administrator.
    Pycharm和Navicat免费全功能版资源(即破解版)
    git常用命令
    pycharm常用的快捷键
    CSS3的媒体查询
    CSS列表中与list-style=none等价的样式
    CSS3中的mouse事件(mouseleave,mouseenter,mouseout,mouseover)
    CSS层级(浮动,定位的层级提升)
  • 原文地址:https://www.cnblogs.com/xxt19970908/p/7302395.html
Copyright © 2020-2023  润新知