Estoy tratando de encontrar documentación que indique si java.util.concurrent.Future es/no es seguro para los hilos. Por ejemplo, ¿puedo asignar con seguridad la misma instancia de futuro a múltiples hilos, que todos llamarán Future.get (...)?¿Es java.util.concurrent.Future threadsafe?
He probado el código utilizando Future de esta manera y parece funcionar bien, pero estaría mucho más feliz si pudiera encontrar una expectativa documentada de que el futuro es seguro para el acceso simultáneo de esta manera.
Gracias.
Esencialmente, este comentario es el mismo que la respuesta de Nizet: puede ver las garantías de coherencia de memoria en JDK javadoc: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package- summary.html # package_description –
¿Es seguro leer "Acciones tomadas por el cálculo asincrónico representado por un futuro sucederá antes de las acciones posteriores a la recuperación del resultado a través de Future.get() en otro hilo". como cierto para _many_ otros hilos, así como un solo otro hilo? - "otro hilo" leído literalmente indica un ** único ** otro hilo en oposición a muchos. Parece probable que un implementador del futuro tenga que esforzarse para que sea beneficioso para muchos y funcione para uno, así que sospecho fuertemente que esto es seguro en la realidad. – S42
Sí, porque cada llamada a 'Future.get()' estará bajo la garantía "sucede antes". Es porque cada llamada compilada en el mismo ensamblado que implica una u otra forma de http://en.wikipedia.org/wiki/Memory_barrier –