
ServerSocket server = new ServerSocket(3000);Socket client = new Socket("서버ip",3000);Socket client = server.accept();DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream())DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream())dos.writeUTF("메시지");while(true){
jta.append(dis.readUTF());
}dos.flush();dos.writeUTF("메시지");dos.flush();while(true){
jta.append(dis.readUTF());
}동시에 일 처리를 해야할 때 . ( 동시에 여러 method를 호출할 때 )
프로그램의 종료 시간을 측정할 수 없다.
작은 process.
CPU Scheduling은 두가지 존재
시분할 CPU Scheduling ( time sharing ) : OS에서 사용
선점형 CPU Scheduling ( running time ) : java에서 사용.
Thread는 실행 할 때 마다 결과가 다르게 나온다.
사용법
상속 : extends Thread

piblic class Test extends Threadpiblic void run(){//(동시에 처리되어야 할 코드)
}Test t = new Test();t.start();구현 : implements Runnable **

piblic class Test implements Runnable{piblic void run(){//(동시에 처리되어야 할 코드)
}Test t = new Test();Thread th = new Thread(t);th.start();Thread의 생명주기
ServerSocket server = new ServerSocket(3000);Socket client = new Socket("서버ip",3000);Socket client = server.accept();DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream())DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream())dos.writeUTF("메시지");public void runt(){
while(true){
jta.append(dis.readUTF());
}
}dos.flush();dos.writeUTF("메시지");dos.flush();```java
public void run(){
while(true){
jta.append(dis.readUTF());
}
}
```