1 분 소요

동기화(Synchronization)

synchronized 키워드를 사용하여 특정 메소드나 블록에 한 번에 하나의 스레드만 접근하도록 제한한다.

public class SynchronizedCounter {
    private int count = 0;

    // Synchronized Method
    public synchronized void increment() {
        count++;
    }

    public synchronized void decrement() {
        count--;
    }

    public synchronized int value() {
        return count;
    }
}

병렬 스트림(Parallel Streams)

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.parallelStream().reduce(0, Integer::sum);
System.out.println(sum);  // Output: 55

락(Locks)

java.util.concurrent.locks 패키지에 포함된 락들을 사용하면 더 세밀한 제어가 가능하다.

import java.util.concurrent.locks.ReentrantLock;

public class LockCounter {
    private final ReentrantLock lock = new ReentrantLock();
    private int count = 0;

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }

    public void decrement() {
        lock.lock();
        try {
            count--;
        } finally {
            lock.unlock();
        }
    }

    public int value() {
        return count;
    }
}

원자적 클래스(Atomic Classes)

java.util.concurrent.atomic 패키지에 있는 클래스들은 원자적 연산을 지원한다.

import java.util.concurrent.atomic.AtomicInteger;

public class AtomicCounter {
    private AtomicInteger count = new AtomicInteger(0);

    public void increment() {
        count.incrementAndGet();
    }

    public void decrement() {
        count.decrementAndGet();
    }

    public int value() {
        return count.get();
    }
}

스레드 세이프 컬렉션(Thread-Safe Collections)

java.util.concurrent 패키지에는 스레드 세이프한 컬렉션들이 있다.

import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentMapExample {
    public static void main(String[] args) {
        ConcurrentHashMap<String, String> map = new ConcurrentHashMap<>();
        map.put("key", "value");
        String value = map.get("key");  // Output: "value"
    }
}

CompletableFuture

Java 8부터 추가된 CompletableFuture는 비동기 연산을 표현하는 클래스이다.

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureExample {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello");
        String result = future.get();  // Output: "Hello"
    }
}

댓글남기기