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 |