老爷子这代码,看跪了! (上)

简介: 老爷子这代码,看跪了! (上)

这是why的第 99 篇原创文章

你好呀,我是why哥。

不是,这个照片不是我,标题说的老爷子就是这个哥们,这事得从前几天说起。

image.png

前几天,发现在一个大佬云集的技术群里面,大佬们就 Happens-Before 关系和 as-if-serial 语义进行了激烈的讨论。

而我一看时间,快到 23 点了,大佬们都这么卷,那我必须得跟着卷进去,于是看了一下他们的聊天记录。

而我,作为一只菜鸡,虽然没有什么参与感,但是感觉大佬们说的都挺有道理的,据理力争。

所以基本上,我全程就是这样的:

image.png

但是,当他们说着说着就聊到了《Java并发编程实战》,我一下就支棱了起来。

这书我看过啊,而且这书就在我手边呀,终于可以插上话了。

仔细一看,他们说的是书中的 16.1.4 小节:

image.png

没啥映像了,甚至连“借助同步”这个词都没有搞明白啥意思。

于是我翻到这一小节,读了起来。

由于这小节篇幅不长,且除了 Happens-Before 关系这个基础知识铺垫外,没有其他的背景,所以我把这一小节截图出来,给大家看看:

image.png


怎么样,大家看完之后什么感觉?

是不是甚至都没有耐心看完,一种云里雾里的感觉?

说实话,我看的时候就是这个感觉,每个字都看得懂,但是连在一起就不知道啥意思了。

所以,读完之后的感觉就是:

image.png


找源码


但是不慌,文章里面举的例子是 FutureTask ,这玩意并发编程基础之一,我熟啊。

于是决定去源码里面看看,但是并没找到书中举的 innerSet 或者 innerGet 的方法:

image.png

由于我这里是 JDK 8 的源码了,而这本书的发布时间是 2012 年 2 月:


image.png

由于是译本,原书写作时间可能就更早了。

对比这 JDK 版本发布时间线来看,如果是源码,也是 JDK 8 之前的源码了:


image.png

果然,一个大佬告诉我,JDK 6 里面的源码就是这样写的:

image.png


但是我觉得去研究 JDK 6 的收益不是很大呀。(主要还是我懒得去下载)

于是,我还是在 JDK 8 的源码里面,发现了一点点蛛丝马迹。

终于搞懂了,什么是“借助同步”了。

而且不得不赞叹 Doug Lea 老爷子的代码,真的是:妙啊。

image.png

到底什么是“借助同步”呢?且听我细细道来。

目录
相关文章
|
存储 安全 Python
python多线程------>这个玩意很哇塞,你不来看看吗
python多线程------>这个玩意很哇塞,你不来看看吗
|
小程序 安全 Java
你还只会用 AtomicXXX ?!恭喜你,可以下岗了!
你还只会用 AtomicXXX ?!恭喜你,可以下岗了!
你还只会用 AtomicXXX ?!恭喜你,可以下岗了!
|
消息中间件 JavaScript 小程序
麻了,代码改成多线程,竟有9大问题 上
麻了,代码改成多线程,竟有9大问题 上
|
安全 Java 数据库连接
麻了,代码改成多线程,竟有9大问题 下
麻了,代码改成多线程,竟有9大问题 下
|
前端开发 程序员 开发工具
你疯了吧,竟然在代码里面“下毒”?
除了有点味道以外,这回是不记住了,我们编程写代码的过程和我们日常生活的例子,往往都是这样可以对应上,有了真实可以触及的实物,再去了解编程就会更加容易,也很难忘记。但可能会写着写着代码,就傻笑起来!
|
前端开发 Java Spring
求求你不要写满屏的 try...catch 了,这才是优雅的处理方式,真香...
求求你不要写满屏的 try...catch 了,这才是优雅的处理方式,真香...
273 0
求求你不要写满屏的 try...catch 了,这才是优雅的处理方式,真香...
|
SQL 存储 监控
聊聊那些年遇到过的奇葩代码
无论是开发新需求还是维护旧平台,在工作的过程中我们都会接触到各种样式的代码,有时候会碰到一些优秀的代码心中不免肃然起敬,但是更多的时候我们会遇到很多奇葩代码,有的时候骂骂咧咧的吐槽一段奇葩代码后定睛一看作者,居然是几个月以前自己的写的,心中难免浮现曹操的那句名言:不可能,绝对不可能。
聊聊那些年遇到过的奇葩代码
|
前端开发 JavaScript 容器
【一个让你停不下来的动效】——难道不来瞅瞅?(含源码+思路)
【一个让你停不下来的动效】——难道不来瞅瞅?(含源码+思路)
169 0
【一个让你停不下来的动效】——难道不来瞅瞅?(含源码+思路)
|
JavaScript 前端开发
不看后悔系列!原来代码还可以这么写!
不看后悔系列!原来代码还可以这么写!
|
Python
又烧脑又炫技还没什么用,在代码里面打印自身
又烧脑又炫技还没什么用,在代码里面打印自身
209 0
又烧脑又炫技还没什么用,在代码里面打印自身

相关实验场景

更多