1. 프로세스
- 작업단위 :운영체제로부터 자원을 할당받는 작업의 단위(실행 중인 프로그램)
- 구조 : OS가 프로세스 할당하면 프로그램 code와 data를 각 메모리 영역(stack, heap) 할당
- 메모리 영역
- Stack : 지역변수, 매개변수 리턴 변수를 저장하는 공간
- Heap : 프로그램이 동적으로 필요한 변수를 저장하는 공간
2. 쓰레드
- 프로세스 내에서의 코드 실행흐름,
- 자바는 메인쓰레드가 main() 메서드를 실행시키면서 시작
- 생성 : 프로세스가 작업중인 프로그램에서 실행요청이 들어오면 쓰레드 생성하여 명령처리
- 자원 : 프로세스 내 여러 쓰레드가 있고, 실행을 위한 프로세스 내 주소공간이나 heap 공유, stack 할당
- 쓰레드 종류
- 싱글 쓰레드 : 프로세스 안에서 하나의 쓰레드만 실행
- 멀티 쓰레드 :여러 개의 작업 동시에 할 수 있어서 성능이 좋아지고, 자원의 효율적인 사용 동기화문제, 데드락문제 발생 가능성 증가
- 쓰레드 종류
3. 쓰레드 사용방법
(1) Thread 클래스
public class TestThread extends Thread { -> Thread 클래스 상속
@Override
public void run() {
// 쓰레드 수행작업(핵심)
}
}
TestThread thread = new TestThread(); // 쓰레드 생성
thread.start() // 쓰레드 실행
(2) Runnable 인터페이스
public class TestRunnable implements Runnable { -> Runnable 인터페이스
@Override
public void run() {
// 쓰레드 수행작업
}
}
Runnable run = new TestRunnable();
Thread thread = new Thread(run); // 쓰레드 생성
thread.start(); // 쓰레드 실행
(3) 람다식 사용
public static void main(String[] args) {
Runnable task = () -> {
int sum = 0;
for (int i = 0; i < 50; i++) {
sum += i;
System.out.println(sum);
}
System.out.println(Thread.currentThread().getName() + " 최종 합 : " + sum);
};
'TIL' 카테고리의 다른 글
[TIL] 20240109 Java 스트림 (1) | 2024.01.09 |
---|---|
[TIL] 20240105 Java 클래스 간의 데이터 전달 (0) | 2024.01.05 |
[TIL] 20240103 Java 예외처리, 제네릭, Wrapper (1) | 2024.01.03 |
[TIL] 20240102 Java 객체지향, 클래스, 인터페이스, 상속 (2) | 2024.01.02 |
[TIL] 20231229 Java 연산자, 배열, 컬렉션 (0) | 2023.12.29 |