Ciao,
Premetto che di java ne capisco poco, comunque credo che dovresti separare la parte della GUI dalla logica che sta dietro alla comunicazione client-server.
Se LudecaLogInServer(socket); crea anche il JPanel mi pare ovvio che questo viene creato di continuo ad ogni nuovo thread
Schematicamente dovrebbe essere (prendilo per pseudocodice
):
codice:
class LudecaGUIServer(); //Runnable, gestisce solo la gui
class LudecaThreadServer(socket); //Runnable, gestisce la comunicazione con il client
class LudecaLogInServerParallelMain() {
public void main(){
LudecaGUIServer gui = LudecaGUIServer();
gui.run();
while(true) {
System.out.println("In attesa di chiamate dai Client... ");
Socket socket = serverSocket.accept();
System.out.println("Ho ricevuto una chiamata di apertura da:\n" +
socket);
LudecaThreadServer serverThread = new LudecaThreadServer(socket);
serverThread.run();
}
}
}
Chiaramente, lascio a te l'onere di gestire i thread e la loro comunicazione oltre alle risorse condivise (probabilmente i thread lavoreranno sulla stessa JTable)