[Spring] CH03 소켓통신 고급 (책)

jaegeunsong97·2023년 2월 18일
0

[Fast Campus] Spring

목록 보기
3/44
post-thumbnail

📕 프로세스

프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다. 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.

📕 쓰레드

스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

package ch13;

// 쓰레드가 시작되면 OS가 쓰레드를 만들고 Java에게 알려주고 Java는 run을 호출
class Sub implements Runnable {
	@Override
	public void run() {
		for (int i = 1; i < 11; i++) {
			System.out.println("서브 쓰레드 : "+i);
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

public class ThreadEx01 {

	// 메인 쓰레드
	public static void main(String[] args) {
		Sub s = new Sub();
		Thread t1 = new Thread(s);
		t1.start();
		for (int i = 1; i < 6; i++) {
			System.out.println("메인 쓰레드 : " + i);
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				e.printStackTrace();
			}	
		}
	}
}

📕 웹서버 통신

📜 소스 코드

https://github.com/codingspecialist/socket-study/tree/main/webserver

📕 반이중과 전이중

📜 반이중

🔔 두 디바이스간 통신선이 하나 (선은 stream을 의미함)

🔔 한쪽 디바이스에서 송신과 수신 모두 가능

🔔 하나의 통신선으로 송신과 수신을 함. 때문에 동시에 송신과 수신을 할 수 없음.

📜 전이중

🔔 두 디바이스간 통신선이 두 개(송신선, 수신선)

🔔 송신선과 수신선선이 각각 존재하므로 데이터 송신과 동시에 수신이 가능

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글