Domanda

Sto cercando di trovare la documentazione che indica se java.util.concurrent.future è/non è threadsafe. Ad esempio, posso tranquillamente dare la stessa istanza di futuro a più thread, che chiameranno tutti Future.get (...)?

Ho testato il codice usando il futuro in questo modo e sembra funzionare bene, ma sarei molto più felice se potessi trovare aspettative documentate che il futuro è sicuro per l'accesso simultaneo in questo modo.

Grazie.

È stato utile?

Soluzione

Dato che il futuro è destinato ad essere utilizzato da diversi thread (almeno quello che si sottomette e quello che imposta il suo risultato) e dato che la documentazione specifica che esiste una relazione tra il calcolo asincrono e le azioni che si verificano Dopo la chiamata, suppongo che le implementazioni siano thread-safe (almeno le implementazioni standard).

Altri suggerimenti

Se stai usando un file Future tornato da un ExecutorService, quindi sì, sono garantiti per essere sicuri. Dal momento che il futuro è un'interfaccia, il creatore dell'interfaccia non può garantire che tutte le implementazioni sarebbero sicure.

Nizet solleva però un buon punto. Il documento afferma che le implementazioni dell'interfaccia futura dovrebbero essere sicure del thread, non rendere il thread-safe di implementazione, quindi violerebbe il contratto del futuro

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top