[JAVA] 싱글스레드(Single-Thread)와 멀티스레드(Multithreading)의 차이점 및 개념
싱글스레드(Single-thread)와 멀티스레드(Multithreading)란 무엇인가?
컴퓨터 프로그램에서 '싱글스레드(Single-thread)'와 '멀티스레드(Multithreading)'는
병렬 처리와 동시 실행을 가능하게 하는 중요한 개념이다.
이 두 개념은 프로그램이 어떻게 작업을 처리할지, 자원을 어떻게 효율적으로 사용할지를 결정짓는 핵심적인 차이를 나타낸다.
싱글스레드는 하나의 실행 흐름만을 사용해 순차적으로 작업을 처리하는 방식이다.
멀티스레드는 여러 개의 실행 흐름을 동시에 사용해 병렬로 작업을 처리하는 방식이다.
목차
- 싱글스레드(Single-thread)란 무엇인가?
- 멀티스레드(Multithreading)란 무엇인가?
- 싱글스레드와 멀티스레드의 차이점
1. 싱글스레드(Single-thread)란 무엇인가?
싱글스레드는 프로그램이 하나의 실행 흐름만을 사용해 작업을 처리하는 방식이다.
즉, 프로그램은 한 번에 하나의 작업만 처리하고, 모든 작업은 순차적으로 진행된다.
이 방식은 간단한 프로그램이나 적은 작업을 처리할 때 적합하지만,
작업이 많거나 시간이 걸리는 작업이 포함되면 성능이 저하될 수 있다.
예시: 싱글스레드로 작업하는 프로그램
public class SingleThreadExample {
public static void main(String[] args) {
System.out.println("작업 1 시작");
performTask1();
System.out.println("작업 1 끝");
System.out.println("작업 2 시작");
performTask2();
System.out.println("작업 2 끝");
}
public static void performTask1() {
try {
Thread.sleep(2000); // 2초 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void performTask2() {
try {
Thread.sleep(2000); // 2초 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
위 코드에서 작업 1이 끝나야 작업 2가 시작된다.
즉, 하나의 작업이 끝날 때까지 다른 작업은 진행되지 않으며, 순차적으로 실행된다.
2. 멀티스레드(Multithreading)란 무엇인가?
멀티스레드는 하나의 프로그램 내에서 여러 스레드가 동시에 실행되는 환경을 의미한다.
여러 스레드는 병렬로 작업을 처리하거나 동시 실행을 통해 성능을 최적화하고 처리 시간을 단축시킬 수 있다.
멀티스레딩을 활용하면 CPU 자원을 효율적으로 사용할 수 있고, 다양한 작업을 동시에 처리할 수 있기 때문에 성능이 향상된다.
예시: 멀티스레드로 작업하는 프로그램
public class MultiThreadExample {
public static void main(String[] args) {
System.out.println("작업 1 시작");
Thread thread1 = new Thread(MultiThreadExample::performTask1);
thread1.start();
System.out.println("작업 2 시작");
Thread thread2 = new Thread(MultiThreadExample::performTask2);
thread2.start();
}
public static void performTask1() {
try {
Thread.sleep(2000); // 2초 대기
System.out.println("작업 1 끝");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public static void performTask2() {
try {
Thread.sleep(2000); // 2초 대기
System.out.println("작업 2 끝");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
위 코드에서 작업 1과 작업 2는 동시에 실행된다.
두 작업은 서로 독립적으로 진행되며, 작업의 실행 시간이 겹치기 때문에 더 효율적으로 처리된다.
3. 싱글스레드와 멀티스레드의 차이점
특징 | 싱글스레드(Single-thread) | 멀티스레드(Multithreading) |
실행 흐름 | 하나의 스레드만 사용하여 순차적으로 실행된다. | 여러 스레드가 동시에 실행된다. |
성능 | 작업량이 많을 경우 성능 저하가 발생할 수 있다. | 여러 작업을 동시에 처리하므로 성능이 향상된다. |
자원 사용 | CPU와 메모리 자원을 순차적으로 사용한다. | CPU와 메모리 자원을 동시에 여러 스레드가 사용한다. |
복잡도 | 상대적으로 구현이 간단하다. | 동기화, 스레드 관리 등 복잡한 처리가 필요하다. |
적용 분야 | 작은 프로그램이나 간단한 작업에 적합하다. | 대규모 애플리케이션, 멀티코어 CPU 환경에서 최적화된 성능을 발휘한다. |
예시 | 순차적인 계산이나 간단한 입출력 처리 | 웹 서버, 데이터베이스 처리 등 병렬 작업이 필요한 환경 |
다음 글에서는 MDC의 개념과 멀티스레드 환경에서의 MDC 적용에 대해 다루겠습니다.