title: How do I send a message over multiple threads in Java?
body: <p>I made a simple chat server and client and the client will send text to the server, and the server will only send it back to the client that sent it to it. I want it to send to all the clients instead of just that one. </p>
  
  <p>Server:</p>
  
  <pre><code>import java.io.IOException;
  import java.net.ServerSocket;
  
  public class Server {
  
      public static void main(String[] args) throws IOException {
          ServerSocket s = null;
          boolean listening = true;
          try {
              s = new ServerSocket(5555);
          } catch (IOException e) {
              e.printStackTrace();
          }
  
          while(listening)
              new ServerThread(s.accept()).start();
  
      }
  
  }
  </code></pre>
  
  <p>Thread:</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.net.Socket;
  
  public class ServerThread extends Thread {
  
      private Socket sock = null;
  
      public ServerThread(Socket socket) {
          super("Server Thread.");
          this.sock = socket;
      }
  
      public void run() {
  
          PrintWriter out = null;
          BufferedReader in = null;
  
          try {
              System.out.println(sock.getInetAddress() + " has joined.");
              out = new PrintWriter(sock.getOutputStream(), true);
              in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
  
              String input;
  
              while((input = in.readLine()) != null) {
                  System.out.println(input);
                  out.println(input);
              }
  
              in.close();
              out.close();
              sock.close();
  
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
      }
  
  }
  </code></pre>
  
  <p>Client: </p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.net.Socket;
  import java.net.UnknownHostException;
  public class Client 
  {
      public static void main(String[] args) throws IOException {
          Socket sock = null;
          PrintWriter out = null;
          BufferedReader in = null;
  
          try {
              sock = new Socket("127.0.0.1", 5555);
              out = new PrintWriter(sock.getOutputStream(), true);
              in = new BufferedReader(
                      new InputStreamReader(sock.getInputStream()));
          } catch (UnknownHostException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
  
          BufferedReader stdIn = new BufferedReader(new InputStreamReader(
                  System.in));
          String userInput;
  
  
          while ((userInput = stdIn.readLine()) != null) {    
              out.println(userInput);
              System.out.println(in.readLine());
          }
  
          out.close();
          in.close();
          sock.close();
      }
  
  }
  </code></pre>