Notice
Recent Posts
Recent Comments
Link
SeouliteLab
Java에서 AtomicLong을 활용한 원자적인 연산 처리 방법 본문
소개:
Java에서 AtomicLong은 멀티스레드 환경에서 원자적인 연산을 수행할 수 있는 클래스입니다. 이 글에서는 AtomicLong을 사용하여 스레드 간의 안전한 연산을 처리하는 방법에 대해 알아보겠습니다.
AtomicLong 소개:
AtomicLong은 java.util.concurrent.atomic 패키지에 포함되어 있으며, long 값의 원자적인 조작을 지원합니다. 즉, 멀티스레드 환경에서 안전하게 증가, 감소, 갱신 등의 연산을 수행할 수 있습니다.
설정:
Java 5 이상 버전에서는 AtomicLong 클래스를 사용할 수 있습니다.
예제 1: AtomicLong을 사용하여 안전한 증가 연산 처리
import java.util.concurrent.atomic.AtomicLong;
public class AtomicLongExample {
public static void main(String[] args) {
AtomicLong counter = new AtomicLong(0);
// 스레드 1: 카운터를 1씩 증가
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.incrementAndGet();
}
});
// 스레드 2: 카운터를 1씩 증가
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.incrementAndGet();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 최종 카운터 값 출력
System.out.println("카운터 값: " + counter.get());
}
}
출력 결과:
카운터 값: 2000
AtomicLong 설명:
위 예제에서는 AtomicLong을 사용하여 두 개의 스레드가 안전하게 카운터를 증가시키는 방법을 보여줍니다. incrementAndGet() 메서드를 호출하여 원자적으로 증가시키므로, 스레드 간의 경쟁 상태나 데이터 불일치 문제를 방지할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
Java에서 디렉토리 크기 계산하는 방법 (0) | 2024.03.26 |
---|---|
Java에서 ArrayBlockingQueue를 활용한 스레드간 안전한 데이터 전달 방법 (0) | 2024.03.26 |
Java에서 CountDownLatch를 활용한 동기화 작업 처리 방법 (0) | 2024.03.26 |
Java에서 쓰레드(Thread) 다루기: 생성, 실행, 정지 (0) | 2024.03.26 |
[Java/자바] 대소문자 변환 및 대소문자 무시 비교하기 (0) | 2024.03.26 |