# 병렬처리 관련

###

### AtomicInteger

* **volatile** 은 **Thread1**에서 쓰고, **Thread2**에서 읽는 경우만 동시성을 보장. 두개의 쓰레드에서 쓰기작업을 한다면 문제가 될 수 있습니다.
* **synchronized**를 쓰면 안전하게 동시성을 보장하지만 비용이 가장 큼.
* Atomic 클래스는 [CAS(compare-and-swap)](https://stackoverflow.com/questions/9749746/what-is-the-difference-between-atomic-volatile-synchronized)를 이용하여 동시성을 보장. 여러 쓰레드에서 데이터를 write해도 문제 없음
* Integer는 동시성 보장이 안됨

### ConcurrentHashMap VS HashTable

* **synchronized 는 메서드 내부에서 블록으로 처리중.**
* 동시성 제어 HashTable보다 성능이 좋음&#x20;
* **volatile 필드 사용 중**
