Java - 멀티스레딩과 동기화

m0ng·2025년 6월 17일

Thread 생성 방법

Runnable 인터페이스 구현

public class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Runnable 실행 중");
    }
}
Thread t = new Thread(new MyRunnable());
t.start();

Thread 클래스 상속

public class MyThread extends Thread {
    public void run() {
        System.out.println("Thread 실행 중");
    }
}
new MyThread().start();

동기화의 필요성

멀티스레드는 공유 자원을 동시에 접근하므로 동기화 없이는 데이터 오염 가능성이 있습니다.

synchronized

public synchronized void increment() {
    count++;
}

volatile

변수를 쓰레드 간에 즉시 공유하도록 보장하는 키워드입니다.

volatile boolean running = true;

데드락 예시

synchronized(obj1) {
    synchronized(obj2) {
        // 데드락 발생 가능
    }
}

ExecutorService

쓰레드풀 사용을 통해 효율적으로 자원을 관리할 수 있습니다.

ExecutorService pool = Executors.newFixedThreadPool(5);
pool.execute(() -> System.out.println("작업 처리"));

0개의 댓글