Przerobiłem kod, po podpowiedziach na forum i nadal mam problem z umieszczeniem poprawnych wartośći w HashMap (przez co nie mogę przeprowadzić komunikacjji pomiędzy klietami). Aktualnie poprawnie umieszczany w mapie jest nick użytkownika (ID), z każdym następnym połączonym do serwera klientem, do mapy zostaje dodany jego nick. Jednak znowu źle dodaje instancję klasy odpowiedzialną za komunikację. Proszę o pomoc, bo nie mam już żadnego pomysłu co jest nie tak. Nie wiem, w jaki sposób powinny być umieszczane dane w HashMap (jak umieści instancję tej klasy)? Pozdrawiam

//metoda z klasy ServerClientManagerClass, odpowiedzialna za przetworzenie danych i pobranie nazwy użytkownika 
... 
ServerReadingStreamsThreadClass ser_rea_thread; 
... 
public String process_message(String message){ 
                String result = null; 
                if(message.startsWith("#connect")){ 
                        map.put(user_nick(message), ser_rea_thread);//putting user name and thread in map 
                        result = "\nConnected is user: "+user_nick(message); 
                        System.out.print("\nMapa: "+map.toString()); 
                }else if(message.startsWith("#disconnect")){ 
                        ..... 
                return result; 
        } 

Natomiast to jest właśnie klasa odp.za komunikację:

class ServerReadingStreamsThreadClass implements Runnable{ 
        
        private Socket new_socket; 
        private DataInputStream in_data; 
        private DataOutputStream out_data; 
        private JTextArea receive_field; 
        ServerClientManagerClass scmc = new ServerClientManagerClass(); 
                        
        ServerReadingStreamsThreadClass(Socket new_socket, JTextArea receive_field, ServerClientManagerClass scmc){ 
                        this.new_socket = new_socket; 
                        this.receive_field = receive_field; 
                        this.scmc = scmc; 
                        } 
                
                public void run() { 
                        String message; 
                        String output; 
                        try{ 
                in_data = new DataInputStream(new_socket.getInputStream()); 
                out_data = new DataOutputStream(new_socket.getOutputStream()); 
                        scmc.add_client_streams_2_list(out_data); 
                        }catch (IOException e) { 
                                e.printStackTrace(); 
                        } 
                        while(true){ 
                                try{ 
                                while((message = in_data.readUTF())!=null){ 
                                output = scmc.process_message(message);  
                                receive_field.append("\n"+output); 
                                scmc.broadcast_message(output); 
                                } 
                                }catch (IOException e) { 
                                        e.printStackTrace(); 
                                } 
                        
                        } 
                } 
        }

I na koniec metoda z innej klasy uruchamiająca wątek (oraz nasłuchiwanie serwera).

public static void lauch_server(int port,JTextArea receive_field){ 
                
                try{ 
                        server_socket = new ServerSocket(port); 
                        receive_field.append("Serwer jest uruchomiony..."); 
                }catch (IOException e) { 
                        e.printStackTrace(); 
                } 
ServerClientManagerClass client_manager_class = new ServerClientManagerClass(); 
                while(true){ 
                        ServerReadingStreamsThreadClass serv_thr_class; 
                        try{ 
serv_thr_class = new ServerReadingStreamsThreadClass(server_socket.accept(), receive_field, client_manager_class); 
                Thread server_thread = new Thread(serv_thr_class); 
                                server_thread.start(); 
                        }catch (IOException e) { 
                                e.printStackTrace(); 
                        } 
        } 
}