정리
volatile
업데이트 한 값은 반드시 메모리에 반영하여 다른 스레드가 참조할 때, 같은 값을 얻을 수 있게 하는 제한자
AtomicInteger, ConcurrentHashMap
transient
직렬화 과정에서 제외하고 싶은 경우
패스워드 같은 보안상 또는 불필요한 등등 다양한 이유로 데이터 직렬화하여 전송할 때, 제외하고 싶은 경
AtomicInteger
volatile 은 Thread1에서 쓰고, Thread2에서 읽는 경우만 동시성을 보장. 두개의 쓰레드에서 쓰기작업을 한다면 문제가 될 수 있습니다.
synchronized를 쓰면 안전하게 동시성을 보장하지만 비용이 가장 큼.
Atomic 클래스는 CAS(compare-and-swap)를 이용하여 동시성을 보장. 여러 쓰레드에서 데이터를 write해도 문제 없음
Integer는 동시성 보장이 안됨
ConcurrentHashMap VS HashTable
synchronized 는 메서드 내부에서 블록으로 처리중.
동시성 제어 HashTable보다 성능이 좋음
volatile 필드 사용 중
Last updated
Was this helpful?