본문 바로가기

자바(java)

9강: 스레드와 동시성 프로그래밍

반응형

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