본문 바로가기
공부는 평생하는 것이다

자바에서 동시성을 적용하여 max + 1 결과를 만드는 메소드 만들기

by IT Daily Life 2024. 4. 11.
728x90
반응형


자바에서 여러 스레드 간에 안전하게 값을 증가시키는 메소드를 만들어야 할 때가 있습니다. 이를 위해 AtomicInteger나 synchronized 키워드를 사용할 수 있습니다.

1. AtomicInteger 사용하기

AtomicInteger는 원자적 연산을 지원하여 여러 스레드 간에 안전하게 값을 증가시킬 수 있습니다. 아래는 AtomicInteger를 사용하여 max + 1 값을 생성하는 메소드의 예시입니다.

import java.util.concurrent.atomic.AtomicInteger;

public class ConcurrentUtils {
    private static AtomicInteger max = new AtomicInteger(0);

    public static int generateMaxPlusOne() {
        return max.incrementAndGet();
    }
}

2. synchronized 키워드 사용하기

synchronized 키워드를 사용하면 메소드나 특정 블록을 한 번에 하나의 스레드만 실행하도록 보호할 수 있습니다. 아래는 synchronized 키워드를 사용하여 max + 1 값을 생성하는 메소드의 예시입니다.

public class ConcurrentUtils {
    private static int max = 0;

    public synchronized static int generateMaxPlusOne() {
        return ++max;
    }
}


어떤 방법을 선택하시든, 이러한 메소드는 여러 스레드에서 안전하게 호출할 수 있습니다.


728x90
반응형