PDA

View Full Version : [Java] (Possibile) conflitto di thread in ascolto sullo stesso socket


ciccionamente90
13-06-2013, 22:43
Ciao amicici.
Mi trovo alle prese con un programma con socket multithread. Ci sono più client con un thread a loro dedicato. Il thread del socket è praticamente sempre in ascolto con un while(listening) iniziante con una lettura bloccante inputBufferedReader.readline().

A questo punto avrei la necessità di ascoltare l'input in altri thread del programma (sullo stesso socket). Immagino che due thread in ascolto sullo stesso socket potrebbero dare problemi. Quindi mi stavo chiedendo se esiste la possibilità di disabilitare temporaneamente la lettura dal ciclo nel thread del socket.

La variabile booleana listening è interna al thread in questione.

WarDuck
16-06-2013, 18:59
Ciao amicici.
Mi trovo alle prese con un programma con socket multithread. Ci sono più client con un thread a loro dedicato. Il thread del socket è praticamente sempre in ascolto con un while(listening) iniziante con una lettura bloccante inputBufferedReader.readline().

A questo punto avrei la necessità di ascoltare l'input in altri thread del programma (sullo stesso socket). Immagino che due thread in ascolto sullo stesso socket potrebbero dare problemi. Quindi mi stavo chiedendo se esiste la possibilità di disabilitare temporaneamente la lettura dal ciclo nel thread del socket.

La variabile booleana listening è interna al thread in questione.

Stai usando TCP o UDP? Cosa devi fare di preciso? Stai parlando del lato server e di come gestire i client che si connettono? Hai valutato l'idea di usare 1 unico thread per l'ascolto delle nuove connessioni e assegnare i vari Socket client ai thread?

ciccionamente90
16-06-2013, 19:53
Alla fine ho risolto togliendo il while e salvando appunto i socket, il quale viene richiamato ad ogni necessità del server (senza quindi essere chiuso). Solo che in questo modo "comanda il server", nel senso che è lui a decidere quando mettersi in ascolto.

Grazie comunque. :)