mport java.awt.HeadlessException;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JOptionPane;

public class Server {
 private ServerSocket serv;
 public Server(){
  try {
   serv = new ServerSocket(30000);
   System.out.println("서버를 가동했습니다.");
   Socket sock = serv.accept();


   DataOutputStream dos = new DataOutputStream(sock.getOutputStream());
   DataInputStream dis = new DataInputStream(sock.getInputStream());
   Thread th = new Thread(){
    public void run(){

     while(true){
      try {
       dos.writeUTF(JOptionPane.showInputDialog("서버가 하고싶은말:"));
       dos.flush();
      } catch (HeadlessException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
    }
   };th.start(); 

   while(true){
    System.out.println(dis.readUTF());//서버에서 받은 거 출력
   }


  } catch (IOException e){
   e.printStackTrace();
  }
 }
 public static void main(String[] args) {
  new Server();
 }
}


제가 작성한 코드는 아니고 예제 보고있는건데

궁금한게 저기에 왜 쓰레드로 불러줘야 하죠??

저거 없어도 정상적이지 않나요???????


그러니깐 클라이언트가 접속할때 Socket sock = serv.accept();

 여기서 소켓을 생성해서 계속 코드가 이어지는걸로 알고있는데


왜 굳이 쓰레드로 처리한거에요??


제가 이해를 잘못했나