Java practice_240113

Choi Suyeon·2024년 2월 13일
0

일대일 채팅

서버

  1. 서버 소켓생성
    ServerSocket server = new ServerSocket(3000);

  2. 접속자 소켓을 받는다.
    Socket client = server.accept();

  3. 데이터를 보내고, 읽기위한 스트림을 소켓에서 얻기
    DataInputStream dis = new DataInputStream( client.getInputStream() );
    DataOutputStream dos = new DataOutputStream( client.getOutputStream() );

  4. 스트림에 데이터 쓰기
    dos.writeUTF("메시지");

  5. 스트림의 내용을 목적지로 분출
    dos.flush();

  6. 소켓에 들어온 데이터 읽어서 대화 내용창에 출력
    while(true){
    jta.append(dis.readUTF());
    }

클라이언트

  1. 서버 소켓생성
    ServerSocket client = new ServerSocket("서버ip", 3000);

  2. 데이터를 보내고, 읽기위한 스트림 소켓에서 얻기
    DataInputStream dis = new DataInputStream( client.getInputStream() );
    DataOutputStream dos = new DataOutputStream( client.getOutputStream() );

  3. 소켓에 들어온 데이터 읽기
    while(true){
    jta.append(dis.readUTF());
    }

  4. 스트림에 데이터 쓰기
    dos.writeUTF("메시지");


Thread

동시에 일(method)처리를 해야 할 때.(동시에 여러 method를 호출할 때.)
프로그램의 종료 시간을 측정할 수 없다.
작은 Process.
=> 실행중인 프로그램(사용자, OS에서 실행)
CPU가 한번에 처리하는 일의 단위.(한번에 하나의 프로세스만 처리)

CPU Scheduling은 두가지 존재

  • 시분할 CPU Scheduling (time sharing) :

    OS에서 사용.
    작업관리자의 역할이 매우 중요.
    작업관리자가 현재 실행중인 Process를 분석하여 CPU를 점유하는 시간을 설정.

  • 선점형 CPU Scheduling (running time) :

    java에서 사용.
    작업관리자가 필요없다. 간단하게 Thread실행할 수 있다.

Thread는 실행할 때마다 결과가 다르게 나온다.

문법

상속 : extends Thread
구현 : implements Runnable

  • Thread의 생명주기

  • Interrupt : CPU 점유하고 있는 Thread를 강제로 분리하는 것.


  • 상속 : extends Thread
1. Thread를 상속
public class Test extends Thread(){

	2. run method를 override
	public void run(){

	3. Thread로 동작해야하는 코드 정의(동시에 처리되어야할 코드)
	
    }

	4. 상속관계의 자식 클래스를 객체화
	Test t = new Test();

	5. Thread클래스의 start()호출
	t.start();

}
  • 구현 : implements Runnable
1. Thread를 상속
public class Test extends Runnable(){

	2. run method를 override
	public void run(){

	3. Thread로 동작해야하는 코드 정의(동시에 처리되어야할 코드)
	
    }

	4. 상속관계의 자식 클래스를 객체화
	Test t = new Test();

	5. Thread클래스를 has a관계로 생성
    Thread th = new Thread(t);
    
    6. Thread클래스의 start()호출
	th.start();

}

0개의 댓글