手写Callable 了解其运行原理

下面代码是我手写的一个实现callable的实现类。不谈具体实现了什么类容,重点是怎么让这个线程跑起来的。用了submit()方法。
看看源码里面到底是个什么鬼。

看一下submit()方法的源码

我去RunnableFuture 这玩意又是个什么鬼? newTaskFor() 又是个啥玩意?来再往下看
答案:原来RunnableFuture就是个Runnable。再看看newTaskFor()是个啥鬼玩意。

new 一个FutureTask 不知道是啥玩意。再往下看


既然实现了Runnable 肯定是要重写run()方法的嘛。找到run()方法.

返回值 看是用了set(result)方法,又用了report(result)方法,最后用get()方法return report(result);将返回值返回回去。
具体的我就不往下说了,感兴趣的自己可以去看看源码。
说一大堆源码,不如自己去模拟手写一个。
大体步奏:
1.FutureTask实现Runnable 重写run()方法。
2.将Callable 丢进FutureTask里面来, 在run方法中执行call方法
3.get方法拿到返回值。
4.补充get方法的阻塞,run方法跑完前阻塞等待结果。



测试结果就不贴出来了。代码也不过多讲解了,有兴趣的老铁可以对着敲一敲,看看源码。

手写Callable相关推荐

  1. 使用tf.keras搭建mnist手写数字识别网络

    使用tf.keras搭建mnist手写数字识别网络 目录 使用tf.keras搭建mnist手写数字识别网络 1.使用tf.keras.Sequential搭建序列模型 1.1 tf.keras.Se ...

  2. TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络

    TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...

  3. 动手学PaddlePaddle(4):MNIST(手写数字识别)

    本次练习将使用 PaddlePaddle 来实现三种不同的分类器,用于识别手写数字.三种分类器所实现的模型分别为 Softmax 回归.多层感知器.卷积神经网络. 您将学会 实现一个基于Softmax ...

  4. [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)

    文章目录 1. 使用 LeNet 预测 1.1 导入包 1.2 建立 LeNet 模型 1.3 读入数据 1.4 定义模型 1.5 训练 1.6 绘制训练曲线 1.7 预测提交 2. 使用 VGG16 ...

  5. Pytorch 学习 (一)Minst手写数字识别(含特定函数解析)

    目录 本人目前在跟随csdn博主 "K同学啊"进行365天深度学习训练营进行学习,这是打卡内容 也作为本人学习的记录. 一.准备部分 三.训练模型 四.正式训练 五.输出 MNIS ...

  6. 手写springcloud|熔断 hystrix

    文章目录 手写springcloud|熔断hystrix github示例代码 服务调用和熔断的方式 熔断的流程 Spring Cloud Hystrix 熔断细节 基本步骤 原版使用核心代码 实现过 ...

  7. 全连接神经网络实现MNIST手写数字识别

    在对全连接神经网络的基本知识(全连接神经网络详解)学习之后,通过MNIST手写数字识别这个小项目来学习如何实现全连接神经网络. MNIST数据集 对于深度学习的任何项目来说,数据集是其中最为关键的部分 ...

  8. 2022必会的前端面试手写题

    前端面试题视频讲解 将数字每千分位用逗号隔开 数字有小数版本: let format = n => {let num = n.toString() // 转成字符串let decimals = ...

  9. Java并发系列(11)——ThreadPoolExecutor实现原理与手写

    接上一篇<Java并发系列(10)--FutureTask 和 CompletionService> 文章目录 9 线程池 9.1 JDK 线程池 9.2 ThreadPoolExecut ...

最新文章

  1. web常见几种处理图标方法 【转】
  2. 3.列表(一个打了激素的数组)
  3. requirejs(shim)处理加载非AMD规范的js库
  4. 深度学习之数学基础(临时记录)
  5. java 1000以内的完数
  6. 八大排序:Java实现八大排序及算法复杂度分析
  7. Android Glide数据更新及内存缓存、硬盘缓存清理
  8. php友情链接大于3换行,细节见真情 PHPWind v5.3友情链接功能改进
  9. 试题7 算法训练 P0505(最右边的那个非0的数字)
  10. 怎么修改asp文件上传大小限制?
  11. Laravel 框架 - 模板继承
  12. macos同时运行多个版本php程序(nginx+php56+php72)
  13. 常用数组方法汇总(ES3、ES5、ES6、ES7、ES10)
  14. 2022年第十三届蓝桥杯JAVA B组部分题解
  15. 拼多多店铺营业执照相关问题
  16. 生活中的定律——墨菲定律
  17. python积木编程软件_积木编程下载-积木编程app下载v1.0.0-西西软件下载
  18. 计算机表格增加,电脑中给Excel表格添加水印效果的方法
  19. (在ObjectARX中使用MFC)
  20. 10.1寸安卓通用车载导航

热门文章

  1. 看百度小度在节目中对答如流,想起了某银行大堂机器人
  2. Android模拟器使用SD卡
  3. db2 快速清空表数据
  4. GDOI2021爆(tuì)炸(yì)记
  5. c语言指针的有关总结
  6. Mockito的@Mock与@MockBean
  7. 保研北京大学计算机研究生的同学,本科都是哪些大学?
  8. wordpress一键全站迁移和备份
  9. Mysql 乐观锁 事务,Mysql事务隔离级别与乐观锁的问题
  10. linux oracle 更换ip,Linux 修改IP地址和网关