当前位置: 首页 > news >正文

ScheduledFuture Source Code Analysis

ScheduledFuture

Overview

  • is a delayed result-bearing action, 可以被cancel.
  • 通常是在ScheduledExecutorService里面schedule一个task, 然后ScheduledFuture是其task执行接受后的返回结果。

Code Analysis

  • 继承于两个接口: extends Delayed, Future
  • 一些继承chain
    • interface Delayed extends Comparable, Comparable 就是底。
    • Future 接口就是底。
  • 关于Future 接口
    • Future其实代表的是异步计算的一个结果。
    • Future下面的方法也是为了check该异步计算是否完成,或者等待其完成;或者获取该计算结果。
    • 要想知道异步计算是否完成,或者正在blocking, 只能通过 get 方法获取。
    • Cancel 方法是当你想要cancel该异步计算时可以调用的一个方法。
    • 除了上面提到的方法,其他方法则是用作判定该task是否正常完成或者被cancel了。
    • 当异步计算task完成后,是不可以再被cancel的。
    • 如果你想使用Future的cancel功能,但却不能提供一个usable result, 你可以指定Future<?>的 type, 并且返回null作为
    • 内存一致性影响:线程A异步计算的结果,如果线程B调用了future.get方法之后,是可以访问在线程A中异步计算过程中修改的共享数据和其结果的。
    • Methods
      • boolean cancel(boolean mayInterruptIfRunning);
        • 这一方法的目标是cancle对应的 task的执行, 不管该task是否已经启动都是可以调用这个方法的。
        • 如果此方法调用成功,则随后你再怎么调用isDone() or isCancelled(),结果都会返回true.
      • boolean isCancelled();
        • 如果一个task在未完成之前被cancle了,则此方法返回true.
      • boolean isDone();
        • 如果task完成,则此方法返回true; 不管该task是正常完成,还是被cancel, or even throw exception了。
      • V get() throws InterruptedException, ExecutionException;
        • 该方法被调用后,会一直等待该task完成。然后返回该task执行完后的结果。
      • V get(long timeout, TimeUnit unit);
        • 参数timeout规定了等待时间,如果等待时间到了,则不再等待。这样就意味着返回结果不一定是完成异步计算后的结果,如果完成,则返回结果为异步计算的结果;否则返回的结果并不是异步计算的结果。
http://www.lryc.cn/news/474027.html

相关文章:

  • 【CSS】CSS 样式重置 (normalize.css 和 reset.css) 和通用样式配置
  • 自动化机器学习(AutoML)详解
  • Linux: network:erspan0
  • 第11课 计算思维
  • ACL, ACL Workshop, ACL Findings 解释
  • 《使用Gin框架构建分布式应用》阅读笔记:p272-p306
  • 【搜索引擎】俄罗斯搜索引擎yandex
  • 加密源代码|html代码如何加密保护?3分钟学会4种源代码加密妙招,代码人必看
  • Jetson Orin NX平台自研载板 IMX477相机掉线问题调试记录
  • spring-boot(整合mybatisplus、及常见注解)
  • 深度学习:yolov3的使用--建立模型
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.13——深入理解指针(3)
  • 每日算法一练:剑指offer——数组篇(6)
  • 【环境搭建】Apache ZooKeeper 3.8.4 Stable
  • 算法练习——双指针
  • vue中el-table显示文本过长提示
  • JS 字符串拼接并去重
  • opencv 图像预处理
  • SAP B1 功能模块字段介绍 - 价格清单(下)
  • 传智杯 第六届-复赛-D
  • Java - 数组实现大顶堆
  • ifuse挂载后,在python代码中访问iOS沙盒目录获取app日志
  • Windows WSL环境下安装 pytorch +ROCM 支持AMD显卡
  • uniapp中skymap.html(8100端口)提示未登录的排查与解决方法
  • 训练模型时梯度出现NAN或者INF(禁用amp的不同level)
  • Maven核心概念
  • Sonatype Nexus 部署手册
  • TLV320AIC3104IRHBR 数据手册 一款低功耗立体声音频编解码器 立体声耳机放大器芯片麦克风
  • (8)结构体、共用体和枚举类型数据
  • Jedis操作和springboot整合redis