Utilizzo di thread separati o thread singolo

0

Nel mio progetto, su un sistema di sicurezza, stavo usando un socket per ottenere i dettagli del client e poi memorizzarlo in un database (il suo IP e la sua connessione e il servizio a cui accedeva). Mi stavo chiedendo se il recupero dei dettagli e la loro memorizzazione in un database dovrebbe essere fatto in thread separati o un singolo thread. Qual è l'approccio più vantaggioso?

    
posta user1369975 18.03.2014 - 07:02
fonte

1 risposta

1

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 .

    
risposta data 18.03.2014 - 08:04
fonte

Leggi altre domande sui tag