메인 스레드
: 자바 프로그램을 실행하면 처음에 시작되는 스레드가 메인 스레드(Main-thread) 이다
프로그램의 기본 뼈대이고 프로그램의 시작과 끝을 관리한다
모든 자바 프로그램은 메인 스레드에서 시작된다
public class Main { // main 메서드에서 시작!!
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
- 메인스레드가 main 메서드 안의 코드를 순서대로 실행한다
- 만약 main 메서드 안에서 다른 스레드를 만들면 메인 스레드는 다른 스레드들을 관리하는 동시에 여러작업이 실행될 수 있도록 도와준다
- 메인 스레드가 종료되면 프로그램도 종료된다
| 구분 | 싱글 스레드 (Single-thread) | 멀티 스레드 (Multi-thread) |
| 정의 | 하나의 스레드가 순차적으로 작업을 처리하는 방식 | 여러 개의 스레드가 동시에 작업을 병렬로 처리하는 방식 |
| 작동 방식 | 한 번에 하나의 작업만 처리, 작업이 끝나야 다음 작업을 시작함 | 여러 스레드가 동시에 실행되며, 여러 작업을 병렬로 처리함 |
| 속도 | 작업이 순차적으로 이루어지기 때문에 속도가 느릴 수 있음 | 여러 작업을 동시에 처리할 수 있어 속도가 빠름 |
| 메모리 사용 | 메모리 사용이 상대적으로 적음 (스레드가 하나이기 때문) | 여러 스레드가 메모리를 공유하여 효율적이지만, 동기화 관리 필요 |
| 안정성 | 한 번에 하나의 작업만 처리하므로 동기화 문제나 충돌 발생 가능성이 낮음 | 여러 스레드가 동시에 자원을 사용하므로 동기화 문제와 충돌 가능성 있음 |
| 사용 자원 | 시스템 자원 사용이 적음 | 시스템 자원을 많이 사용하여 메모리와 CPU 사용량이 증가할 수 있음 |
| 장점 | - 구현이 간단하고 관리가 쉬움 - 동기화 문제 발생 가능성 낮음 |
- 여러 작업을 병렬로 처리하여 속도가 빠름 - 자원을 효율적으로 활용 가능 |
| 단점 | - 한 번에 하나의 작업만 처리해 속도가 느림 - 프로그램이 멈추면 전체가 멈춤 |
- 동기화 문제 및 충돌 가능성 있음 - 복잡한 구현과 관리가 필요함 |
> 싱글 스레드는 메인 스레드가 종료되면 프로세스도 종료된다
> 멀테스레드에서는 실행중인 스레드가 하나라도 있다면 프로세스는 종료되지 않는다
메인스레드가 작업 스레드보다 먼저 종료되더라도 작업스레드가 계속 실행중이면 프로세스는 종료되지 않는다
'Java' 카테고리의 다른 글
| Java_스레드 상태 (0) | 2024.10.17 |
|---|---|
| Java_스레드 이름 (0) | 2024.10.17 |
| Java_멀티 스레드와 멀티 프로세스의 차이 (0) | 2024.10.17 |
| Java_제네릭(Generics) (0) | 2024.10.16 |
| Java_어노테이션(Annotation) (0) | 2024.10.16 |