[Java] ThreadLocal


[Java] ThreadLocal

동시성 문제 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제 다음과 같이 TestService와 test 메서드를 작성한다. sleep(1000)을 통해서 1초의 지연을 만들자. 그렇기에 1초 이후에 호출하면 순서대로 실행을 할 수 있다. 다음과 같이 2개의 쓰레드를 만들고 2초 간격으로 실행할 수 있게 만든다 그럼 결과가 정상적으로 나온다. first는 nameStore에 할당된 값이 없기에 null이 나오는 게 맞고 second는 First가 끝나고 난 뒤에 실행이 됐기에 처음 nameStore는 first가 맞다. 이번에는 sleep을 0.1초 둔다 이렇게 되면 test 메서드에서는 1초의 지연이 있는 데 이 지연이 끝나기 전에 다른 쓰레드가 접근이 가능하다. sleep이 2초일 때와 달리 First의 NameStore가 동시성 문제로 인해서 second로 나오게 된다 여기서 문제는 조회하는 부분에서 발생함 first와 second는 각각...


#ThreadLocal #동시성 #스프링 #스프링부트 #쓰레드 #쓰레드로컬 #자바

원문링크 : [Java] ThreadLocal