Sto cercando di trovare la documentazione che indica se java.util.concurrent.Future è/non è thread-safe. Ad esempio, posso tranquillamente dare la stessa istanza di Future a più thread, che chiameranno tutti Future.get (...)?java.util.concurrent.Future threadsafe?
Ho testato il codice utilizzando Future in questo modo e sembra funzionare correttamente ma sarei molto più felice se potessi trovare l'aspettativa documentata che il futuro è sicuro per l'accesso concorrente in questo modo.
Grazie.
In sostanza, questo commento è lo stesso della risposta di Nizet: è possibile vedere le garanzie di coerenza della memoria in javk JDK: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package- summary.html # package_description –
È sicuro leggere "Le azioni eseguite dal calcolo asincrono rappresentate da un'azione Future avvenire prima delle successive al recupero del risultato tramite Future.get() in un altro thread." vero per _many_ altri thread e un singolo thread? - La "lettura di un altro thread" indica letteralmente un ** singolo ** altro thread rispetto a molti. Ofc sembra probabile che un futuro implementatore dovrebbe fare di tutto per farlo rompere per molti e lavorare per uno quindi sospetto fortemente che questo sia sicuro nella realtà. – S42
Sì, perché ogni chiamata a 'Future.get()' sarà sotto garanzia "succede prima". È perché ogni chiamata viene compilata nello stesso assembly che coinvolge l'una o l'altra forma di http://en.wikipedia.org/wiki/Memory_barrier –