chanlk 最近的时间轴更新
chanlk

chanlk

V2EX 第 318281 号会员,加入于 2018-05-24 12:19:54 +08:00
根据 chanlk 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
chanlk 最近回复了
4 天前
回复了 chanlk 创建的主题 程序员 有对接过 worldpay 支付经验的朋友吗?
@usbusbc 相反啦,不是想背刺,是觉得我们商户权利好大啊,能存储用户的交易凭证,扣款时间也是我们定的
5 天前
回复了 blackbookbj277 创建的主题 iPad 64G 的返校季 iPad air 值得买么?
耳机出了折算下来是多少钱啊 @blackbookbj277
试试飞书文档
44 天前
回复了 idragonet 创建的主题 深圳 深圳住房公积金不能申请异地房产还贷?
提取?提取的话想干嘛就干嘛啊
53 天前
回复了 chanlk 创建的主题 全球工单系统 华为云 OBS 难用死了
@bootvue 后面没用 sdk 了,看着 sample http 调用写的,各种手动拼凑各种奇怪格式的请求头,磕磕绊绊,太难了
55 天前
回复了 ecloud 创建的主题 Nintendo Switch 我是否真的需要买台 NS?
塞尔达出了 DLC 捆绑的卡带,国行可以玩;
不过,别买国行 别买国行 别买国行
76 天前
回复了 chanlk 创建的主题 Apple AppStore 下载不可用/极慢
@JimmyLX IPhone12 移动 4G 5G 都不行,打开 bilibili 微信 qq 音乐都没问题
76 天前
回复了 chanlk 创建的主题 Apple AppStore 下载不可用/极慢
开了个 VPN 就快了 但是我的又不是美区 ID 凌乱了
89 天前
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@az467 @nlzy @documentzhangx66

关于第二个问题:结论是对的,是我弄错了,sorry ;
我前面说能复现的代码是错的,代码如下:

class Scratch {

int a = 0;
boolean flag = false;

public static void main(String[] args) {

final Scratch scratch = new Scratch();
new Thread(() -> {
while (true) {
scratch.reader();
}
}).start();

new Thread(() -> {
while (true) {
scratch.writer();
}
}).start();
}

public void writer() {
flag = false;
a = 41;
a = 42;
flag = true;
}

public void reader() {
if (flag) {
if (a != 42) {
System.out.println("error!");
}
}
}
}

这里我搞错了,这里能打印出 a!=42 明显是线程切换导致的, 不能画蛇添足在上面再次为 a 赋值的。

一个值得提醒的现象:
示例代码中即使把 flag 的 volatile 去掉,a 的值也无法复现出 0 的情况(jdk7/jdk8 均不行),查资料说 x86cpu 不支持写重排序,x86cpu 的市场占有率那么高,所以大部分同学都无法复现,mac m1 的同学可以试试能不能复现

我的想法和 documentzhangx66 同学的是一样的,但是 volatile 的能力其实很强的,az467 发的那个文章写的很清楚了

最后,个人愚见,如 volatile 那么底层的工具,没有特殊的需求还是尽量少用,用更加上层的工具在开发和后续的维护上都更合适些
91 天前
回复了 chanlk 创建的主题 Java Java Happens-before 的疑问
@documentzhangx66 @nlzy 感谢回答~
问题一那个应该是伪代码哈, 然后是先做了 Happens-before 的假设再说行为, 是对的;
问题二那个确实是错的,我直接跑了下代码,确实会出现 flag==true 的时候 a!=42 的情况
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3967 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 01:34 · PVG 09:34 · LAX 18:34 · JFK 21:34
Developed with CodeLauncher
♥ Do have faith in what you're doing.