az467

az467

一灯孤燃
V2EX 第 249184 号会员,加入于 2017-08-17 12:41:11 +08:00
不热爱编程 不喜欢生活
对代码没有追求 憎恨互联网和软件行业
对技术充满冷漠 没有较强的责任心和抗压能力
对新生事物平淡 不乐于探索
不熟悉编程语言 没有扎实的计算机基础
对数据结构、算法基础均无深入理解
不能有效掌握TCP/IP协议栈细节 对现有框架和解决方案没有自己的理解
没有有ACM等竞赛经验 没有互联网大厂实习经历

负面驱动 苦大仇深
根据 az467 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
az467 最近回复了
@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 不支持,换语言吧。
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2123 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 8ms · UTC 08:17 · PVG 16:17 · LAX 01:17 · JFK 04:17
♥ Do have faith in what you're doing.