V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  az467  ›  全部回复第 1 页 / 共 3 页
回复总数  57
1  2  3  
@mdkml
1. 可以 不是 必须。
2. println() 内部锁住了 System.out ,而且是在循环体内部调用,这给 Hotspot 的优化方式造成了影响,所以在这里程序可以终止。
但是换成另外一种 jvm / 平台就又不一定了。
@FrankHB

啊?

Chapter 13 的例子中程序有加锁,并且没有 external action,所以用 fairness 解释为什么程序可能会被优化成死循环。

原 po 的代码里甚至都没有出现过 synchronized/volatile,任何 happens before 关系都没有,
就算 Java 保证调度公平,难道 JIT 编译器就不优化了?
@ignor 你可以这么理解,“时间上的延迟”在这里是无穷大。
@ignor

了解一下 JMM,你就会知道这种优化非但没有错误,反而完全是正确的。

因为变量没有被 volatile 修饰,所以 jvm 不用保证变量在线程间的可见性。
既然不用保证,那当然可以完全不保证,甚至可以反过来“保证”变量完全不可见。

这就像很多人开了 gcc 的 O3 优化,然后惊奇地发现程序运行结果跟自己预期不一致。
不好意思,是你把代码写错了。
月经问题。。。

不是编译器优化,是 jvm 优化。

你没把 jvm 的 jit 关掉,所以 jvm 把

while (!ready);

优化成了

if (ready == false)
while (true);
你咋就盯着好的看呢?

因为涨跌都能赚钱,所以没有熊市。
vice versa,涨跌都能亏钱,没有牛市。

因为杠杆能加到很高,所以容易赚钱。
vice versa,很容易被强制平仓,血亏。
39 天前
回复了 Joaquin 创建的主题 问与答 本科计科,考研 or 工作?
才大二?
那简单,去实习一年,啥都懂了。
是。
如果你的技术不能和公司利润直接挂钩,那你就属于成本中心。

你想给公司增加成本,公司能同意吗?
102 天前
回复了 a62527776a 创建的主题 随想 感觉贷款炒股的人贼多 心动了
懂了,马上跑路,谢谢老哥。
1.因为 Java 类型构造器是不变的。
2.ArrayList 是 mutable 的容器类,这么做符合里氏替换原则。
3.就算你想让它协变逆变双变都不行,Java 不支持,换语言吧。
126 天前
回复了 Posh 创建的主题 职场话题 当教师四个月,感到很迷茫。
分配问题根本不可能,也根本不应该靠教育解决。
别想那么多。
159 天前
回复了 Not404 创建的主题 生活 蛋壳暴雷后,真希望公司能搬离大城市
能让公司违背经济规律行事的只有行政命令
165 天前
回复了 Rxianbei 创建的主题 分享发现 大家大学时候的学生会是个什么德行
没啥存在感
辅助学校工作,帮辅导员背锅
小范围以权谋私

没了
167 天前
回复了 huangya 创建的主题 问与答 数字签名原理的疑问
都一样啊。
第一个直接加密了原文。
第二个加密的是原文的哈希值,原文是公开的。
反正都能确定消息是 A 发的。

除非 A 神经错乱,不然不会给 B 发送乱七八糟的内容,所以就能确定喽。
你判断不出来说明你也是速成的。
或者还不如速成。
189 天前
回复了 bug403 创建的主题 问与答 双十一你们买了什么东西比较超值?
麦当劳 麦辣鸡翅
拒绝注释比例过少的 commit 。
1  2  3  
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2065 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 07:23 · PVG 15:23 · LAX 00:23 · JFK 03:23
♥ Do have faith in what you're doing.