여러 스레드에 공유되는 자원은 동시성 이슈가 발생할 수 있습니다.

공유되는 객체에 대한 접근을 관리해야 동시성 이슈를 막을 수 있습니다.

Lock - Synchronized를 활용한 동시 접근 제어

public class SafeCounterWithLock {
    private int counter;
 
    public synchronized void increment() {
        counter++;
    }
}

문제점 : synchronized 키워드는 성능 저하를 발생 시킬 수 있음

Atomic - CAS(Compare-and-swap) 을 활용한 동시 접근 제어

CAS(Compare And Swap) 알고리즘