1. 스레드 개념과 생성
스레드(Thread) 는 프로세스 내에서 실제로 작업을 수행하는 단위입니다. 각 스레드는 프로세스의 자원을 공유하면서 독립적으로 실행됩니다.
스레드 생성 방법
Thread 클래스 상속: Thread 클래스를 상속받아 run 메서드를 오버라이드합니다.
class MyThread extends Thread {
public void run() {
// 작업 내용
}
}
MyThread t = new MyThread();
t.start(); // 스레드 시작
Runnable 인터페이스 구현: Runnable 인터페이스를 구현하고, Thread 객체를 생성할 때 인자로 사용합니다.
class MyRunnable implements Runnable {
public void run() {
// 작업 내용
}
}
Thread t = new Thread(new MyRunnable());
t.start();
2. 스레드 동기화와 상호 배제
스레드 동기화(Synchronization) 는 여러 스레드가 공유 자원에 동시에 접근하는 것을 조절하는 방법입니다. 동기화를 통해 데이터의 일관성과 동시성 문제를 해결할 수 있습니다.
상호 배제(Mutual Exclusion): 한 번에 하나의 스레드만 특정 코드 영역(크리티컬 섹션)에 접근하도록 제한합니다.
synchronized 메서드 또는 블록을 사용하여 구현합니다.
public synchronized void criticalSection() {
// 공유 자원 접근
}
3. 멀티스레드 프로그래밍 기초
멀티스레드 프로그래밍은 여러 스레드를 사용하여 다양한 작업을 동시에 처리하는 방법입니다. 이는 프로그램의 효율성과 반응성을 향상시킬 수 있습니다.
멀티스레드 환경에서는 스레드의 생성, 실행, 동기화 및 종료를 관리해야 합니다.
공유 자원 접근 시 동기화를 고려해야 합니다.
스레드 간의 통신은 주의 깊게 설계되어야 합니다.
4. Executor와 스레드 풀
Executor 프레임워크는 스레드의 생성과 관리를 쉽게 해주는 도구입니다. 스레드 풀(Thread Pool) 은 작업 처리를 위해 재사용 가능한 스레드 집합을 제공합니다.
ExecutorService 인터페이스를 사용하여 스레드 풀을 생성하고 관리할 수 있습니다.
Executors 유틸리티 클래스를 통해 다양한 종류의 스레드 풀을 생성할 수 있습니다.
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.submit(() -> {
// 작업 내용
});
executor.shutdown(); // 작업이 끝나면 스레드 풀 종료
'자바(java)' 카테고리의 다른 글
11강: 데이터베이스와 JDBC (0) | 2023.12.17 |
---|---|
10강: 네트워크 프로그래밍 (0) | 2023.12.17 |
8강: 예외 처리와 파일 입출력 (0) | 2023.12.17 |
7강: 객체 지향 프로그래밍 (0) | 2023.12.17 |
6강: 메서드와 함수 (0) | 2023.12.17 |