2025/06/03 3

[Spring] @AfterEach, @BeforeEach

스프링부트에서 테스트를 위해 @Test 어노테이션을 붙인 메서드들을 한꺼번에 실행할 때, 메서드의 순서는 보장되지 않는다. 따라서 다음과 같은 작업을 해주어야 한다. 테스트에 사용되는 데이터는 각 테스트가 종료되면 같이 지워져야 다음 테스트에서 오류가 안난다. 테스트가 종료되면 생성한 데이터를 모두 삭제하는 코드를 @AfterEach가 붙은 메서드에 넣어주면 된다.@AfterEachpublic void afterEach() { // 삭제하는 코드} 반대로 테스트에 사용되는 데이터가 미리 존재해야하는 경우 테스트가 실행되기 전에 실행되어야 하는 코드를 @BeforeEach가 붙은 메서드에 넣어주면 된다.@BeforeEachpublic void beforeEach() { // 테스트 전 실행되어야 하는 코드..

Java 2025.06.03

[Java] AtomicLong

AtomicLong (java.util.concurrent.atomic.AtomiLong)멀티스레드 환경에서 안전하게 Long 값을 다룰 수 있도록 해주는 Wrapper 클래스원자적 연산을 제공해준다.AtomicLong은 여러 스레드가 동시에 값을 읽고 변경할 때,동기화 없이도 안전하게 값을 조작할 수 있도록 만들어졌다.내부적으로는 CPU의 CAS(Compare-And-Swap) 명령어를 이용해 원자성 보장.언제 사용하는지?멀티스레드 환경에서 카운팅, 인덱싱, 유일한 ID 생성 등synchronized 키워드보다 더 나은 성능이 필요한 경우volatile보다 더 복잡한 상태 변경이 필요한 경우 주요 메서드get()현재 값을 반환set(long newValue)값을 강제로 설정getAndSet(long n..

Java 2025.06.03

[Java] ConcurrentHashMap

Map의 구현체 중 다음 세가지의 차이를 알아보자.HashMapHashTableConcurrentHashMap ConcureentHashMapHashMapHashTable동기화 보장(Thread-safe)O (Entry단위 Lock)(비교적 빠름)XO(Map 전체에 Lock)(느림)key, value 에 null값 허용여부X (NullPointerException)OX (NullPointerException) https://velog.io/@alsgus92/ConcurrentHashMap%EC%9D%98-Thread-safe-%EC%9B%90%EB%A6%AChttps://parkmuhyeun.github.io/woowacourse/2023-09-09-Concurrent-Hashmap/

Java 2025.06.03