Long 과 AtomicLong은 어떤 차이가 있을까?
·
프로그래밍/Java
개요 프로젝트를 진행하면서 HashMap을 이용해 Key-Value 형태로 된 InMemory DB를 직접 구현하던 도중, 유저의 정보를 저장할 때 Long Type으로 선언된 유저의 ID값을 증가시켜줘야 하는 경우가 생겼습니다. 이때 대부분 ID 값을 id++ 과 같은 연산을 통해 수행할 텐데, 이렇게 증가 연산을 수행하게 되면 어떤 문제가 발생하게 되는지 그리고 어떻게 해결해야 할지 알아보도록 하겠습니다. 먼저 아래와 같은 연산을 통해 id값을 증가해 준다고 가정하겠습니다 public class UserTable { //예시용 테이블 클래스 Long userId; public void incrementUserId() { userId++; } } 이렇게 작성된 코드는 싱글 스레드 환경에서는 정확하게 동..