【java学习】FutureTask的原理以及机制
FutureTask简介FutureTask类实现了Runnable和Future接口,可以异步获取执行结果
具体使用细节可以参考FutureTask介绍具体细节不再赘述,这里主要关注FutureTask的源码实现
本文对FutureTask中各个主要的调用方法源码进行了分析
这篇文章中Java代码是JDK11版本,部分实现和JDK1.8有出入,但是原理大同小异
FutureTask类成员首先介绍一下这个类中定义了哪些类成员在JDK11的FutureTask源码中,定义了如下的变量:
12345678910111213141516171819202122232425262728293031323334353637383940414243private volatile int state;private static final int NEW = 0;private static final int COMPLETING = 1;private static final int NORMAL = 2;private static final int ...
【MicroRPC】p2pRPC :点对点调用的RPC框架
p2pRPC项目简介这是一个点对点的RPC调用框架,相比起完整的RPC调用框架(例如笔者做的MicroRPC,参见上一篇博客),p2pRPC框架没有做服务发现的功能,服务调用需要client端手动指定server端的地址,因此这个项目并没有什么实际的意义,只是做一个演示的框架,帮助读者理解RPC调用过程中的一些重要模块,包括网络传输,序列化,动态代理,Spring框架自动注入等等。而完整的RPC框架MicroRPC也是基于这一版的代码,加入服务注册与发现的功能(完整版代码的上线时间无限期推迟,因为笔者要去宇宙厂实习了,实在没时间弄啦,这一篇博客尽量早点写完整)
目前的代码仓库里面的P2PRPC分支是可以直接运行的,部分参考了javaguide哥,但是也做了不少的修改和简化
让我们看看p2pRPC框架的实现流程叭 :)
NettyServer/NettyClient的搭建动态代理类Spring依赖注入
【microRPC】个人项目之RPC框架
what is this ?这是我自己做的一个简易的RPC调用框架,Java实现,基于Spring Framework,通过FASTJSON实现序列化,使用JDK原生的动态代理,使用zk完成服务发现和负载均衡,目前项目正在努力建设中,后期预计在这一套RPC框架,再搓一个MQ的项目。
microRPC系列博客将会记录我从零搭建起一套RPC框架的过程,相关的代码也会同步更新在我的github仓库里面
进度更新2024.5.17搭建Netty,client端到server端发request和response测试过了没问题
2024.5.20构建动态代理框架,client端目前可以通过@RpcCall注解为接口注入动态代理类(通过Spring完成依赖注入)
为什么要做RPC框架(如果您还不了解什么是微服务和RPC框架可以参考文章什么是微服务 什么是RPC)
最近准备搓点项目来丰富自己的简历,参考了一圈后觉得电商类项目和外卖项目过于烂大街,于是决定做点不一样的,RPC框架相对来说做的人比较少,而且微服务也是几乎每一个互联网公司都在使用的框架,因此做一个自己的RPC框架就显得比较合适,RPC框 ...