首页   注册   登录
seaswalker's repos on GitHub
Java · 159 人关注
JDK
JDK源码阅读笔记
Java · 16 人关注
onlineexam
在线考试
JavaScript · 11 人关注
js_calculator
JavaScript模仿Windows10计算器
Java · 4 人关注
Consumer
封装常用的生产者-消费者模型
Java · 2 人关注
mysql-driver
Mysql jdbc驱动源码阅读
Java · 1 人关注
2048
2048
Assembly · 1 人关注
8086_ASM
《汇编语言》第三版实验
Java · 1 人关注
activemq-notes
active-mq源码阅读
C · 1 人关注
datastructure
数据结构课程相关代码
Java · 1 人关注
designpatterns
设计模式demo
Java · 1 人关注
jvm
深入理解jvm虚拟机例子
Java · 1 人关注
MiniNetty
简单netty轮子
Java · 0 人关注
activemq
Mirror of Apache ActiveMQ
JavaScript · 0 人关注
blog
博客项目
Java · 0 人关注
calendar
1900-2099年的日历
JavaScript · 0 人关注
clock
JavaScript闹钟
Java · 0 人关注
codeanalysis
代码统计工具
Java · 0 人关注
concurrent
Java Concurrency in Practice
Java · 0 人关注
configurator
配置注入,简单IOC
Java · 0 人关注
design
毕业设计--爬虫
Java · 0 人关注
diamond
来自淘宝diamond:http://code.taobao.org/p/diamond/src/
JavaScript · 0 人关注
extjs
Extjs学习
Java · 0 人关注
forum
简单论坛项目
0 人关注
hotspot
hotspot折腾笔记
Java · 0 人关注
java-design-patterns
Design pattern samples implemented in Java
Java · 0 人关注
json-simple
A simple Java toolkit for JSON. You can use json-simple to encode or decode JSON text.
Java · 0 人关注
lambda
<Java8函数式编程>代码
Java · 0 人关注
logback
The reliable, generic, fast and flexible logging framework for Java.
0 人关注
nb-job-notes
niubi-job源码阅读笔记
0 人关注
notes
笔记

seaswalker

  •   V2EX 第 215544 号会员,加入于 2017-02-16 21:14:15 +08:00,今日活跃度排名 6141
    69 S 92 B
    seaswalker 最近回复了
    围观一下
    1 天前
    回复了 ericgui 创建的主题 程序员 大家会有技术焦虑吗?
    最近想学经济学,😅
    2 天前
    回复了 lipman 创建的主题 问与答 大家一般都用什么颜色的背景撸代码
    白色,黑色看久了费劲
    8 天前
    回复了 jssyxzy 创建的主题 程序员 求推荐 IDEA 的配置和插件
    @gejun123456 这个赞
    10 天前
    回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
    可见性这个东西,我上面说的没有可见性问题,指的是硬件层面。我觉得 Java 里面的可见性指的是两个方面:

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

    可能我们说的都没错,硬件上确实没有顺序问题,而由于 JIT 的优化确实产生了"不可见"的结果,一个概念的两个层面。
    10 天前
    回复了 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
    10 天前
    回复了 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 准确来说是对编译器的提示,告诉编译器这个变量是可能被修改的,不要随便搞事情。。。
    10 天前
    回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
    个人觉得这是提升优化,不加 volatile,编译器会优化成在 while 循环外判断一次,内部则是死循环
    11 天前
    回复了 liushuaikobe 创建的主题 MacBook Pro 问下大家这两款 MBP 哪个更值得入?
    @zzzhzyzy 我是在撕逼鱼收的二手,不能和新的比
    11 天前
    回复了 liushuaikobe 创建的主题 MacBook Pro 问下大家这两款 MBP 哪个更值得入?
    我以前用的 i5-7200U,现在是 i7-4770hq,提升确实肉眼可见
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2945 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 05:56 · PVG 13:56 · LAX 22:56 · JFK 01:56
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1