프로세스(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