手写Callable
手写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相关推荐
- 使用tf.keras搭建mnist手写数字识别网络
使用tf.keras搭建mnist手写数字识别网络 目录 使用tf.keras搭建mnist手写数字识别网络 1.使用tf.keras.Sequential搭建序列模型 1.1 tf.keras.Se ...
- TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络
TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字识别网络 目录 TensorFlow高阶 API:keras教程-使用tf.keras搭建mnist手写数字 ...
- 动手学PaddlePaddle(4):MNIST(手写数字识别)
本次练习将使用 PaddlePaddle 来实现三种不同的分类器,用于识别手写数字.三种分类器所实现的模型分别为 Softmax 回归.多层感知器.卷积神经网络. 您将学会 实现一个基于Softmax ...
- [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
文章目录 1. 使用 LeNet 预测 1.1 导入包 1.2 建立 LeNet 模型 1.3 读入数据 1.4 定义模型 1.5 训练 1.6 绘制训练曲线 1.7 预测提交 2. 使用 VGG16 ...
- Pytorch 学习 (一)Minst手写数字识别(含特定函数解析)
目录 本人目前在跟随csdn博主 "K同学啊"进行365天深度学习训练营进行学习,这是打卡内容 也作为本人学习的记录. 一.准备部分 三.训练模型 四.正式训练 五.输出 MNIS ...
- 手写springcloud|熔断 hystrix
文章目录 手写springcloud|熔断hystrix github示例代码 服务调用和熔断的方式 熔断的流程 Spring Cloud Hystrix 熔断细节 基本步骤 原版使用核心代码 实现过 ...
- 全连接神经网络实现MNIST手写数字识别
在对全连接神经网络的基本知识(全连接神经网络详解)学习之后,通过MNIST手写数字识别这个小项目来学习如何实现全连接神经网络. MNIST数据集 对于深度学习的任何项目来说,数据集是其中最为关键的部分 ...
- 2022必会的前端面试手写题
前端面试题视频讲解 将数字每千分位用逗号隔开 数字有小数版本: let format = n => {let num = n.toString() // 转成字符串let decimals = ...
- Java并发系列(11)——ThreadPoolExecutor实现原理与手写
接上一篇<Java并发系列(10)--FutureTask 和 CompletionService> 文章目录 9 线程池 9.1 JDK 线程池 9.2 ThreadPoolExecut ...
最新文章
- web常见几种处理图标方法 【转】
- 3.列表(一个打了激素的数组)
- requirejs(shim)处理加载非AMD规范的js库
- 深度学习之数学基础(临时记录)
- java 1000以内的完数
- 八大排序:Java实现八大排序及算法复杂度分析
- Android Glide数据更新及内存缓存、硬盘缓存清理
- php友情链接大于3换行,细节见真情 PHPWind v5.3友情链接功能改进
- 试题7 算法训练 P0505(最右边的那个非0的数字)
- 怎么修改asp文件上传大小限制?
- Laravel 框架 - 模板继承
- macos同时运行多个版本php程序(nginx+php56+php72)
- 常用数组方法汇总(ES3、ES5、ES6、ES7、ES10)
- 2022年第十三届蓝桥杯JAVA B组部分题解
- 拼多多店铺营业执照相关问题
- 生活中的定律——墨菲定律
- python积木编程软件_积木编程下载-积木编程app下载v1.0.0-西西软件下载
- 计算机表格增加,电脑中给Excel表格添加水印效果的方法
- (在ObjectARX中使用MFC)
- 10.1寸安卓通用车载导航