首页   注册   登录
seaswalker's repos on GitHub
Java · 166 人关注
JDK
JDK源码阅读笔记
Java · 17 人关注
onlineexam
在线考试
JavaScript · 11 人关注
js_calculator
JavaScript模仿Windows10计算器
Java · 5 人关注
Consumer
封装常用的生产者-消费者模型
Java · 4 人关注
mysql-driver
Mysql jdbc驱动源码阅读
Java · 2 人关注
activemq-notes
active-mq源码阅读
Java · 1 人关注
2048
2048
Assembly · 1 人关注
8086_ASM
《汇编语言》第三版实验
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,今日活跃度排名 4080
    71 S 5 B
    seaswalker 最近回复了
    6 小时 6 分钟前
    回复了 Romanticlizhi 创建的主题 程序员 毕业两年,一身病。。
    扎心了,☹️
    11 小时 40 分钟前
    回复了 locktionc 创建的主题 问与答 求推荐 Windows 10 WSL 可用的终端模拟器
    最好用的是 xshell
    2 天前
    回复了 q8164305 创建的主题 问与答 为什么说异步 io 快
    更有效地利用 CPU 资源
    围观一下
    4 天前
    回复了 ericgui 创建的主题 程序员 大家会有技术焦虑吗?
    最近想学经济学,😅
    5 天前
    回复了 lipman 创建的主题 问与答 大家一般都用什么颜色的背景撸代码
    白色,黑色看久了费劲
    12 天前
    回复了 jssyxzy 创建的主题 程序员 求推荐 IDEA 的配置和插件
    @gejun123456 这个赞
    14 天前
    回复了 LittlePaper 创建的主题 Java 请教一个关于 volatile 数组的问题
    可见性这个东西,我上面说的没有可见性问题,指的是硬件层面。我觉得 Java 里面的可见性指的是两个方面:

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

    可能我们说的都没错,硬件上确实没有顺序问题,而由于 JIT 的优化确实产生了"不可见"的结果,一个概念的两个层面。
    14 天前
    回复了 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
    14 天前
    回复了 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 准确来说是对编译器的提示,告诉编译器这个变量是可能被修改的,不要随便搞事情。。。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1463 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 13ms · UTC 16:28 · PVG 00:28 · LAX 09:28 · JFK 12:28
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1