Pregunta

Esencialmente tengo las siguientes dos declaraciones:

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

Quiero asegurarme de que la creación del proyecto esté completa terminada antes de Se elimina la entrada de InProgress (antes de que se ejecute la siguiente línea). Las declaraciones son completamente independientes entre sí, por lo que me preocupa que el compilador no respete el orden en el código.

He leído un poco sobre volátil, e intenté agregar volátiles al comienzo de la primera línea para que hubiera volatile Project project. Pero eso no se compila. He tenido problemas para encontrar lo que estoy buscando sin perderme en múltiples lecturas, operaciones atómicas, etc.

¿Fue útil?

Solución

Las declaraciones son completamente independientes entre sí, por lo que me preocupa que el compilador no respete el orden en el código.

No, lo hará. Es posible que Otros hilos Puede observar los resultados de las operaciones fuera de orden, pero desde la perspectiva del hilo de ejecución, definitivamente se ejecutará en orden.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top