读写方法上面加了synchronized关键字,不能保证原子性

来源:3-4 synchronized实现可见性代码(下)

慕数据8406292

2019-03-01 19:58

读写方法上面加了synchronized关键字,main方法里面代码用一个for循环包裹起来循环20遍,还是有为0的结果。这样的方法,实现原子性还是有问题的。

写回答 关注

3回答

  • anqilin
    2019-04-10 11:37:20

    根据你这个代码应该是先执行了下边的读方法,你在写方法下面,sleep一段时间,应该可以解决这个问题

  • anqilin
    2019-04-10 11:20:41

    这个可能是指令重排序,读取方法中先执行了打印result,然后再对result赋值

  • qq_行走_0
    2019-03-07 23:27:12

    你好,能否贴一下代码

    慕数据840...

    public static void main(String[] args) { for(int i =0 ; i < 20 ; i++){ SynchronizedDemo synchronizedDemo =new SynchronizedDemo(); synchronizedDemo.new ReadAndWriteThread(true).start(); synchronizedDemo.new ReadAndWriteThread(false).start(); }}

    2019-03-09 20:37:15

    共 1 条回复 >

细说Java多线程之内存可见性

用两种方式实现内存可见性,代领大家深层次学习Java中的内存

55910 学习 · 74 问题

查看课程

相似问题