在存在可变变量的情况下是否可以进行重新排序?

亚历山大·库利亚赫金(Alexander Kulyakhtin)

我做如下,我的程序中只有2个线程。

// Thread 1
write a = 0
write a = 1
write volatile b = 1

// Thread 2
read volatile b // this I always do after write volatile b in the 1st thread
read a

我已经阅读了Java内存模型,并且根据我在线程2中的理解,read a总是会给我1。

我想知道我的理解是否正确。

特别是是否仍会发生REORDERING,所以我在第二个线程中看到a = 0?

Jtahlborn

您的假设基本上是正确的。但是,我会稍微重申一下以符合JMM的保证。

如果线程2读取b 并看到值为1,则随后的读取a为1。像你说的,如果线程2总是读b“后,”线程1个写完它,然后线程2将看到值1并且读a会如您所料。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以在不使用p:columns的情况下对ap:dataTable进行动态列排序?

来自分类Dev

是否可以在不触摸ICMP的情况下进行traceroute?

来自分类Dev

在不重新分配变量的情况下将元素推送到不可变列表

来自分类Dev

是否可以使用变量边界在不使用eval的情况下进行bash大括号扩展?

来自分类Dev

是否可以在不创建全局变量的情况下对客户端javascript进行单元测试?

来自分类Dev

Erlang,是否可以在不重新启动Shell的情况下重新加载或升级nif库?

来自分类Dev

node-config是否可以在不重新启动Node的情况下重新加载配置?

来自分类Dev

是否可以在不重新启动的情况下重新加载lvm.conf?

来自分类Dev

可以使用解构来重新分配RUST中的不可变变量吗?

来自分类Dev

如何在不重新排列索引的情况下使用键 DESC 对多维 PHP 数组进行排序(可以删除这些元素)

来自分类Dev

是否存在最坏情况下时间复杂度为n ^ 3的排序算法?

来自分类Dev

我可以在变量名称由属性本身定义的情况下对变量进行解构吗?

来自分类Dev

是否可以在不与@Service进行数据交互的情况下对类进行注释?

来自分类Dev

是否可以在不与@Service进行数据交互的情况下对类进行注释?

来自分类Dev

是否可以在不重新提交应用程序的情况下解决生产推送通知?

来自分类Dev

是否可以在不重新创建窗口的情况下切换全屏显示?

来自分类Dev

是否可以在不重新打开的情况下从打开的文件中读取新数据?

来自分类Dev

是否可以在不重新渲染的情况下显示/隐藏父元素?

来自分类Dev

是否可以在不重新设置颜色的情况下覆盖CSS阴影阴影距离?

来自分类Dev

UI-Router for Angular:是否可以在不重新加载页面的情况下更新位置

来自分类Dev

是否可以在不重新启动Finder的情况下切换隐藏文件?

来自分类Dev

是否可以在不重新压缩存档的情况下删除RAR文件的(已知)密码?

来自分类Dev

是否可以在不重新安装Ubuntu的情况下替换包含/ home的磁盘?

来自分类Dev

是否可以在没有Live Disk的情况下重新格式化Ubuntu硬盘?

来自分类Dev

是否可以在不更改行为的情况下重新定义javascript函数的各个部分?

来自分类Dev

是否可以在不重新创建窗口的情况下切换全屏显示?

来自分类Dev

是否可以在不重新编译的情况下更改生产的配置(application.conf)?

来自分类Dev

是否可以在不重新启动的情况下添加新的硬盘驱动器?

来自分类Dev

FFprobe-是否可以在不重新编码的情况下获得视频流的“搜索位置”?

Related 相关文章

  1. 1

    是否可以在不使用p:columns的情况下对ap:dataTable进行动态列排序?

  2. 2

    是否可以在不触摸ICMP的情况下进行traceroute?

  3. 3

    在不重新分配变量的情况下将元素推送到不可变列表

  4. 4

    是否可以使用变量边界在不使用eval的情况下进行bash大括号扩展?

  5. 5

    是否可以在不创建全局变量的情况下对客户端javascript进行单元测试?

  6. 6

    Erlang,是否可以在不重新启动Shell的情况下重新加载或升级nif库?

  7. 7

    node-config是否可以在不重新启动Node的情况下重新加载配置?

  8. 8

    是否可以在不重新启动的情况下重新加载lvm.conf?

  9. 9

    可以使用解构来重新分配RUST中的不可变变量吗?

  10. 10

    如何在不重新排列索引的情况下使用键 DESC 对多维 PHP 数组进行排序(可以删除这些元素)

  11. 11

    是否存在最坏情况下时间复杂度为n ^ 3的排序算法?

  12. 12

    我可以在变量名称由属性本身定义的情况下对变量进行解构吗?

  13. 13

    是否可以在不与@Service进行数据交互的情况下对类进行注释?

  14. 14

    是否可以在不与@Service进行数据交互的情况下对类进行注释?

  15. 15

    是否可以在不重新提交应用程序的情况下解决生产推送通知?

  16. 16

    是否可以在不重新创建窗口的情况下切换全屏显示?

  17. 17

    是否可以在不重新打开的情况下从打开的文件中读取新数据?

  18. 18

    是否可以在不重新渲染的情况下显示/隐藏父元素?

  19. 19

    是否可以在不重新设置颜色的情况下覆盖CSS阴影阴影距离?

  20. 20

    UI-Router for Angular:是否可以在不重新加载页面的情况下更新位置

  21. 21

    是否可以在不重新启动Finder的情况下切换隐藏文件?

  22. 22

    是否可以在不重新压缩存档的情况下删除RAR文件的(已知)密码?

  23. 23

    是否可以在不重新安装Ubuntu的情况下替换包含/ home的磁盘?

  24. 24

    是否可以在没有Live Disk的情况下重新格式化Ubuntu硬盘?

  25. 25

    是否可以在不更改行为的情况下重新定义javascript函数的各个部分?

  26. 26

    是否可以在不重新创建窗口的情况下切换全屏显示?

  27. 27

    是否可以在不重新编译的情况下更改生产的配置(application.conf)?

  28. 28

    是否可以在不重新启动的情况下添加新的硬盘驱动器?

  29. 29

    FFprobe-是否可以在不重新编码的情况下获得视频流的“搜索位置”?

热门标签

归档