首页
AI Coding
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
莫那鲁道
掘友等级
Java 萌新
|
小公司
个人博客:http://thinkinjava.cn,关注 Java 并发 Spring Mybatis Tomcat JVM Netty 分布式
获得徽章 6
动态
文章
专栏
沸点
收藏集
关注
作品
赞
6
文章 5
沸点 1
赞
6
返回
|
搜索文章
最新
热门
ConcurrentHashMap 扩容分析拾遗
这是一篇对 transfer 方法的拾遗,关于之前那篇文章的一些一笔带过,或者当时不知道的地方进行回顾。 疑点 1. 为什么将链表拆成两份的时候,0 在低位,1 在高位? 关键看上面注释的代码,如果 runBit 是 0,那么就设置在低位节点,反之,如果是 1,设置在高位。 为…
并发编程——ConcurrentHashMap#addCount() 分析
ConcurrentHashMap 精华代码很多,前面分析了 helpTransfer 和 transfer 和 putVal 方法,今天来分析一下 addCount 方法,该方法会在 putVal 方法中调用。 当插入结束的时候,会调用该方法,并传入一个 1 和 binCou…
并发编程——ConcurrentHashMap#transfer() 扩容逐行分析
ConcurrentHashMap 是并发中的重中之重,也是最常用的数据结果,之前的文章中,我们介绍了 putVal 方法。并发编程之 ConcurrentHashMap(JDK 1.8) putVal 源码分析。其中分析了 initTable 方法和 putVal 方法,但也…
并发编程——ConcurrentHashMap#helpTransfer() 分析
ConcurrentHashMap 鬼斧神工,并发添加元素时,如果 map 正在扩容,其他线程甚至于还会帮助扩容,也就是多线程扩容。就这一点,就可以写一篇文章好好讲讲。今天一起来看看。 在 putVal 方法中,如果发现线程当前 hash 冲突了,也就是当前 hash 值对应的…
并发编程 —— 谈谈线程中断
如何中断一个线程,肯定不会使用 stop。而是使用 interrupt 方法。同时,我们知道,中断一个线程只是打个标志位。不会真的中断线程,但,如果线程是阻塞状态的呢? 而 Java 中,想要阻塞一个线程有很多种方式。 当然上面都是很简单的说说,API 并不是那么的详细。像 L…
使用并发工具实现 RPC 调用流量控制
RPC 服务中,每个服务的容量都是有限的,即资源有限,只能承受住给定的网络请求,所以,在设计 RPC 框架的时候,一定要考虑流量控制这个问题。而 Java 中,实现流量控制有很多中方式,今天说 2 种。 代码中,我们模拟了 100 个线程,每个线程无限调用 RPC。 同时使用另…
SOFA 源码分析 — 调用方式
SOFARPC 提供了多种调用方式满足不同的场景。 例如,同步阻塞调用;异步 future 调用,Callback 回调调用,Oneway 调用。 每种调用模式都有对应的场景。类似于单进程中的调用模式。在单进程中,我们可以使用 JDK 的 Future 实现异步,可以通过观察者…
SOFA 源码分析 — 泛化调用
通常 RPC 调用需要客户端使用服务端提供的接口,而具体的形式则是使用 jar 包,通过引用 jar 包获取接口的的具体信息,例如接口名称,方法名称,参数类型,返回值类型。 但也存在一些情况,例如客户端没有 jar 包,或者是跨语言的调用,这个时候,就需要客户端使用字符串进行泛…
SOFA 源码分析 — 连接管理器
RPC 框架需要维护客户端和服务端的连接,通常是一个客户端对应多个服务端,而客户端看到的是接口,并不是服务端的地址,服务端地址对于客户端来讲是透明的。 我们从 SOFA 中寻找答案。 上面的代码中,一个 ConsumerConfig 对应一个接口服务,并指定了直连地址。 然后调…
SOFA 源码分析— 自定义路由寻址
SOFA-RPC 中对服务地址的选择也抽象为了一条处理链,由每一个 Router 进行处理。同 Filter 一样, SOFA-RPC 对 Router 提供了同样的扩展能力。 那么就看看 SOFA 是如何处理的。 新建扩展文件 META-INF/services/sofa-r…
下一页
个人成就
优秀创作者
文章被点赞
1,797
文章被阅读
231,211
掘力值
7,033
关注了
20
关注者
1,514
收藏集
1
关注标签
12
加入于
2018-01-13