基本上我有以下两个陈述:
Project project = projectDao.createProject(...);
projectDao.deleteInProgressEntry(...);
我想确保项目创建在 inProgress 条目被删除之前完成(在执行下一行之前)。这些语句彼此完全独立,所以我担心编译器可能不遵守代码中的顺序。
我阅读了一些有关 volatile 的资料,并尝试将 volatile 添加到第一行的开头,这样我就有了 volatile Project project
。但这不编译。在不迷失在多线程、原子操作等中的情况下,我很难找到我正在寻找的东西。
最佳答案
The statements are completely independent of each other, so I am worried that the compiler may not respect the ordering in the code.
不,它会。 其他线程可能观察到操作的结果是乱序的 - 但从执行线程的角度来看,它肯定会按顺序执行。
关于java - 防止java乱序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848513/