2

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

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

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

我已经阅读了一些关于 volatile 的内容,并尝试将 volatile 添加到第一行的开头,这样我就可以拥有volatile Project project. 但这不编译。我很难找到我正在寻找的东西,而不会迷失在多线程、原子操作等中。

4

1 回答 1

6

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

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

于 2013-11-07T23:07:00.787 回答