V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  seaswalker  ›  全部回复第 24 页 / 共 31 页
回复总数  614
1 ... 16  17  18  19  20  21  22  23  24  25 ... 31  
2018-05-13 19:50:58 +08:00
回复了 jssyxzy 创建的主题 程序员 求推荐 IDEA 的配置和插件
@gejun123456 这个赞
2018-05-11 23:19:26 +08:00
回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
可见性这个东西,我上面说的没有可见性问题,指的是硬件层面。我觉得 Java 里面的可见性指的是两个方面:

1. 软件层面,编译器重排。
2. 硬件层面上的多变量访问的顺序问题。

可能我们说的都没错,硬件上确实没有顺序问题,而由于 JIT 的优化确实产生了"不可见"的结果,一个概念的两个层面。
2018-05-11 23:10:29 +08:00
回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
再补充几点。一个 CPU 在修改 cache line 之前首先要获得对其的排他控制权,即要向其它 CPU 发送使无效消息,而为了保证性能,每个 CPU 均有一个 Invalidate Queue 用于处理使无效消息,但是 CPU 不提供何时处理使无效消息的保证。Java 的 volatile 实现会在读时插入一个 smp_rmb(),但是 CPU 在遇到读屏障时不会马上刷新 Invalidate Queue,而是只保证顺序,这就是为什么我上面说 volatile 不会加速其它 CPU 看到修改。所以在单个变量的读写上,其实根本没必要使用 CPU 层面上的内存屏障,对付编译器的屏障足矣,这就是 Linux 内核 ACCESS_ONCE 宏的作用,然而 Java 却没得选。。。2333
2018-05-11 20:46:09 +08:00
回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
进一步说,这是 jit 编译器的提升优化,楼主可以试下下面的代码:
public class Test {

private static boolean flag = true;

public static void main(String[] args) throws InterruptedException {

new Thread(new Runnable() {
@Override
public void run() {
while (flag);
System.out.println("退出");
}
}).start();

Thread.sleep(500);

flag = false;
}

}

在两种情况下可以退出,
1. flag 加 volatile
2. 加上 JVM 参数-Xint 关闭 JIT 编译。我觉着其实这里并没有什么可见性问题,这种单个变量的修改本身就应该是原子的,volatile 不可能加速其它 CPU 看到修改的过程,这里的 volatile 准确来说是对编译器的提示,告诉编译器这个变量是可能被修改的,不要随便搞事情。。。
2018-05-11 20:08:50 +08:00
回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
个人觉得这是提升优化,不加 volatile,编译器会优化成在 while 循环外判断一次,内部则是死循环
2018-05-11 06:26:13 +08:00
回复了 liushuaikobe 创建的主题 MacBook Pro 问下大家这两款 MBP 哪个更值得入?
@zzzhzyzy 我是在撕逼鱼收的二手,不能和新的比
2018-05-10 18:18:05 +08:00
回复了 liushuaikobe 创建的主题 MacBook Pro 问下大家这两款 MBP 哪个更值得入?
我以前用的 i5-7200U,现在是 i7-4770hq,提升确实肉眼可见
2018-05-10 13:35:28 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
码送完了,结贴了,😛
2018-05-10 13:35:10 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
@gotounix 已发送
2018-05-10 11:59:09 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
@springsummer emClient 给你发过去了哈
2018-05-10 11:39:22 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
@x537196 给你发过去了哈
2018-05-10 11:23:33 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
2018-05-10 11:22:44 +08:00
回复了 seaswalker 创建的主题 问与答 送几个 Windows 软件的激活码
2018-05-06 09:38:10 +08:00
回复了 lcj2class 创建的主题 程序员 大家平时 coding 时都收藏了哪些提高效率的小工具
我是用 Linux 命令,date -d @时间戳
2018-05-06 09:36:02 +08:00
回复了 zhazi 创建的主题 问与答 求推荐提高编程能力的书?
感觉有深度的书读起来比广度的书费劲的多
2018-05-04 17:45:03 +08:00
回复了 lincya 创建的主题 问与答 狗对自己爱搭不理,却对邻居热情
出轨了
2018-05-04 12:55:20 +08:00
回复了 qweer29 创建的主题 优惠信息 Bundlehunt 上 PDF Expert 只要 4 刀了
好用么
2018-05-02 11:21:34 +08:00
回复了 paolongtao 创建的主题 北京 房租咋都这么贵了?!
住在 2 环边上,一间小次卧 2400...
2018-05-01 16:06:15 +08:00
回复了 chashao 创建的主题 问与答 阅读 UNIX 网络编程卷一,有一道课后题不会,求大佬指点
猜一下,定时器?
1 ... 16  17  18  19  20  21  22  23  24  25 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5962 人在线   最高记录 6547   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 06:30 · PVG 14:30 · LAX 23:30 · JFK 02:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.