2015-02-21 9 views
10

Come si comporta Java Future.get() nel caso in cui venga chiamato più volte al completamento dell'attività? Restituisce lo stesso risultato? Oppure lancia uno e più volte ExecutionException con la stessa eccezione se il calcolo fallisce? Non riesco a trovare nulla nei documenti a riguardo!Java - Future.get() invocazioni multiple

+0

Il [futuro] (https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html) doc di classe (e [Future.get] (https://docs.oracle.com/javase/8/docs /api/java/util/concurrent/Future.html#get--)) risponde alla maggior parte delle domande - deve aver letto qualcos'altro. – user2864740

+1

E potresti anche provarlo e vederlo da solo. –

risposta

18

È possibile chiamare get() su un Future tutte le volte che si desidera e bloccherà solo se l'attività che produce il risultato non è ancora finita.

Se l'attività è già terminata, verrà restituito immediatamente il risultato dell'attività.

Se l'attività non è riuscita con un'eccezione, chiamando get() verrà generato un valore ExecutionException ogni volta che viene chiamato.

4

Non riesco a trovare nulla nei documenti a riguardo!

Hai letto? perché quando li ho letti ho avuto la risposta e qui è ....

V get() 
throws InterruptedException, 
     ExecutionException 

Waits, se necessario, per il calcolo per completare, e poi recupera il suo risultato.

Returns: 
    the computed result 

Throws: 
    CancellationException - if the computation was cancelled 
    ExecutionException - if the computation threw an exception 
    InterruptedException - if the current thread was interrupted while waiting 

Se calcolo non è completato si aspetta, e se ha già completato il risultato sarà tornare al più presto, non importa quante volte lo si chiama

+0

Dove stai leggendo? in https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html#get-- Vedo: Attesa se necessario per il calcolo da completare e quindi recupera il risultato . Senza l'ultima parte Dove ottieni queste informazioni? Non voglio fare affidamento su comportamenti privi di documenti, so cosa succede se provo, ma volevo il contratto preciso. –

+0

@MarcoServetto, quindi ti preghiamo di leggere attentamente la riga, attenderà se il processo non è completato o restituirà il risultato, non è scritto da nessuna parte che verrà un'eccezione se la chiami ripetutamente. "Ottengo quell'informazione provandola, e poi è arrivato alla conclusione » –

Problemi correlati