Risposta rapida: il gestore di socket principale è multi-threaded? In caso contrario, consegnare definitivamente l'elaborazione della richiesta a un executor del pool di thread. Se il gestore della richiesta è già multi-thread, allora è più una sentenza (... o un miglioramento delle prestazioni da sostenere con il test del carico).
...
Se il servizio non gestisce le richieste con un pool di thread di esecuzione, probabilmente dovrebbe. Questo è un problema più centrale rispetto a ottenere i dettagli del client in modo asincrono.
Il vantaggio principale dell'utilizzo di un thread separato consiste nell'eseguire il lavoro in modo asincrono, ovvero in background mentre il thread principale passa alla richiesta successiva. Se il recupero sarà lento e potenzialmente blocchi la gestione delle richieste in arrivo, passare una raccolta a un thread separato sarebbe una buona idea.
Tuttavia, se l'app gestisce già le richieste con un pool di thread di esecuzione e il numero di thread è sufficientemente grande, un pool di thread separato potrebbe non apportare molti vantaggi.
Nota: NON far girare un nuovo thread per ogni richiesta. Invece, guarda nel pacchetto valuta per ThreadPoolExecutor
o ExecutorService
.
Ecco un link di esempio (il primo nella ricerca) da una rapida ricerca di ThreadPoolExecutor
: link .