Da quello che ho letto su Java NIO e SocketChannels [Server] non bloccanti, dovrebbe essere possibile scrivere un server TCP che supporta diverse connessioni usando un solo thread - Io farei un Selettore che aspetta tutti i canali rilevanti nel loop del server.Socket Java: posso scrivere un server TCP con un thread?
È giusto o mi mancano alcuni dettagli importanti? Quali problemi posso incontrare?
(Sfondo:.. La comunicazione TCP sarebbe per un piccolo gioco multiplayer, in modo da max 10-20 connessioni simultanee I messaggi saranno inviati circa ogni pochi secondi.)
Bene ... sembra molto familiare per oscillare la programmazione .. dove si dispone di un thread di invio evento principale, ma nel caso del server, il nome è "Request Dispatch Thread". E c'è anche la buona pratica di delegare ad altri thread quegli eventi/requisiti che richiedono un po 'di elaborazione che potrebbe richiedere più di un secondo per liberare il thread di polling. Ha senso ragazzi o sto solo dicendo matto? – Victor
Sì, quello che dici ha un senso. Quello che descrivi è tipico per i processori di eventi. La richiesta viene gestita come un evento e il canale su cui i dati diventano disponibili o verranno scritti viene gestito da un thread diverso rispetto all'accettore. Si noti che con il modello di I/O originale si presuppone spesso che un server generi un nuovo thread per client, ma questo modello basato su eventi con un numero fisso di thread è ugualmente utile. – Pindatjuh