본문 바로가기

PROGRAMMING/JAVA

[JAVA] AtomicInteger

AtomicInteger?

Concurrency support data structure

Java 5부터 지원하는 Conccurrency int형 자료형으로 이전까진 synchronized 를 사용하여 구현

 

When to use?

한 번에 여러 스레드가 접근하여 기존값을 덮어씌우면 안 되는 경우

AtomicInteger는 원자성을 보장하는 int형 변수로 한 번에 하나의 쓰레드만 변수에 접근하고 변경할 수 있다.

 

For example?

Arrays.stream(s.split("")).forEach(item -> {
    if(item.equals(target)){
        targetCnt.getAndIncrement();
    }
});

 

Java 스트림 연산의 경우 순차 실행이 아닌 병렬로 실행되는데, 이때 단순 int형에 값을 반영하려 하면 IDE에서 경고가 뜬다.

 

 

Convert to atomic이 권장되는데 이말은 즉슨 단순 int가 아닌 동시성을 지원하며 한 번에 하나의 스레드만 접근하여 원자성을 보장하는 AtomicInteger를 사용하라는 것.

 

Other Atomic Data Structure?

 

 

'PROGRAMMING > JAVA' 카테고리의 다른 글

[JAVA] Builder 패턴  (0) 2022.02.11
[JAVA] Stream을 활용해 Array를 List로 변환하기  (0) 2021.11.24
[JAVA] Scanner와 BufferedReader  (0) 2021.11.21
[JAVA] Collection Set/Map/List  (0) 2021.11.21
[JAVA] Set, List -> Array로 변환  (0) 2021.11.05