¿Java.util.concurrent.future Threadsafe?
-
28-10-2019 - |
Pregunta
Estoy tratando de encontrar documentación que indique si java.util.concurrent.future es/no es ThreadSafe. Por ejemplo, ¿puedo dar la misma instancia de futuro a múltiples hilos, que llamarán a Future.get (...)?
He probado el código usando el futuro de esta manera y parece funcionar bien, pero sería mucho más feliz si pudiera encontrar la expectativa documentada de que el futuro es seguro para el acceso concurrente de esta manera.
Gracias.
Solución
Dado que el futuro está destinado a ser utilizado por varios hilos (al menos el que presenta, y el que establece su resultado), y dado que la documentación especifica que existe una relación antes del cálculo asincrónico y las acciones que ocurren Después de Get Call, supongo que las implementaciones son seguras (al menos las implementaciones estándar).
Otros consejos
Si esta usando un Future
regresó de un ExecutorService
, entonces sí, se garantiza que serán seguros. Dado que Future es una interfaz, el creador de la interfaz no puede garantizar que todas las implementaciones sean seguras de hilo.
Sin embargo, Nizet menciona un buen punto. El documento dice que las implementaciones de la interfaz futura deberían ser seguras hilos, no hacer que la implementación segurra el hilo de la seguridad del contrato del futuro