Avrei pensato di creare un singleton per clientConnection, e utilizzare l'istanza attraverso degli swingWorker che ne pensi? In modo tale da utilizzare i metodi della classe in ogni istanza a seconda delle esigenze
Avrei pensato di creare un singleton per clientConnection, e utilizzare l'istanza attraverso degli swingWorker che ne pensi? In modo tale da utilizzare i metodi della classe in ogni istanza a seconda delle esigenze
Supponendo di avere un server multithread, come posso terminare tutte le connessione istanziate?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok , ma ogni thread, chiude il suo socket o utilizzo il thread che accetta le connessioni?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
ok questo mi è chiaro pero io ho una classe dove c'è il server che accetta e una classe che implementa il thread-server che contatta col client. Adesso poichè con l'accept posso salvarmi tutti i socket , nella classe dove si trova il serversocket, volevo chiederti se chiudere i socket dalle classe dove si trova il server che accetta le richieste o magari faccio chiudere ad ogni thread il proprio socket.
Il fatto è che chiudo il server da interfaccia grafica, come faccio a far completare ai thread le attuali operazioni prima di chiudere tutto?
E se utilizzassi un ThreadGroup e invocassi poi il metodo interrupt? i thread finirebbero le operazioni di I/O?
Innanzitutto interrupt su ThreadGroup fa nient'altro che iterare sui suoi Thread invocandoci sopra interrupt e poi invoca interrupt pure sui suoi sotto-gruppi (se ci sono, che a loro volta faranno idem). Sarebbe certamente possibile ma forse un po' superfluo. I Thread dopotutto li crei tu, quindi potresti benissimo tenerli in una collezione.
A parte questo, il punto di interrupt() è un altro. La terminazione di un thread deve essere fatta in maniera "cooperativa", ovvero il lavoro del thread deve cooperare affinché la terminazione possa davvero avvenire e oltretutto in maniera "gradevole" rispetto al lavoro che stava svolgendo.
Invocare interrupt() non fa terminare di brutto il run() del thread ... setta solo un flag e basta. Ci sono dei casi particolari (documentati nel javadoc di interrupt) per cui se il thread in quel momento è bloccato in una delle operazioni "bloccanti" documentate, allora il metodo esce con una eccezione. Ma anche qui non è detto che il run() termini per forza ... dipende cosa si fa e si cattura dentro il run().
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Praticamente ho questo problema , poichè questo è un server multithread, quando uno dei thread termina lo devo comunicar al server in ascolto, che tiene un array list di tutti gli oggetti worker,ovvero oggetti di una classe che serve il client, in modo tale che il server in ascolto possa rimuovere i thread terminati dall'array list.