防止java中的乱序执行

时间:2013-11-07 23:04:20

标签: java execution volatile

基本上我有以下两个陈述:

Project project = projectDao.createProject(...);
projectDao.deleteInProgressEntry(...);

我想确保在删除inProgress条目(在执行下一行之前)之前完成项目创建。这些语句完全相互独立,所以我担心编译器可能不尊重代码中的顺序。

我已经完成了关于volatile的一些阅读,我尝试将volatile添加到第一行的开头,所以我会volatile Project project。但那不编译。我很难找到我正在寻找的东西,而不会迷失多线程,原子操作等等。

1 个答案:

答案 0 :(得分:6)

  

语句完全相互独立,所以我担心编译器可能不尊重代码中的顺序。

不,它会的。 其他线程可能无法按顺序观察操作结果 - 但从执行线程的角度来看,它肯定会按顺序执行。