Ho creato un server TCP NIO Java, attualmente utilizza quattro thread. Un thread ServerRunnable che utilizza un selettore e tre thread di lavoro.
Ho cercato alcune informazioni al riguardo, come ho letto in passato che dovresti avere solo un thread per core del processore. Ecco.
Ma questo mi ha fatto pensare di recente, e dopo un po 'di ricerche ho trovato questo thread .
Dove, nei commenti sull'utente risposta accettato, Donal Fellows sottolinea quanto segue:
Have at most one CPU-bound thread per processor allocated to the application. IO-bound threads aren't a big problem (other than the memory they consume) and it's important to remember that apps can be restricted to only use a subset of the system's CPUs; after all, it's (usually) the user's/admin's computer and not the programmer's.
Con questo in mente, ho ragione di pensare che posso tranquillamente aumentare il numero di thread di selettore e thread di lavoro nel mio pool di thread.
Il thread del mio server legge l'input, elabora i dati in JSONObjects e li inserisce in una coda. I thread di lavoro prendono quindi JSONObjects dalla coda, controllano il tipo di oggetti che sono e quindi li inviano al database. Quindi c'è pochissimo lavoro computazionale in corso lì. È abbastanza sicuro per me aumentare il numero di thread qui, come in uso più thread ServerRunnable e più thread di lavoro? Dire di raddoppiare l'importo di ciascuno per esempio?
A cosa devo pensare quando considero qualcosa di simile?