묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2시간으로 끝내는 코루틴
Coroutine과 ThreadLocal관련 질문
안녕하세요 선생님, 강의 정말 잘 듣고 있습니다. 한가지 강의를 들으면서 궁금한 점이 생겨 질문 드립니다.설명해주신 내용을 들었을 때, 코루틴은 특정 스레드와 종속적인 관계가 아니기 때문에 여러 스레드에 걸쳐 실행될 수 있다고 말씀해주셨습니다."코루틴1의 코드1은 스레드1에서 실행되었지만, 코루틴1의 코드2는 스레드2에서 실행되었다!"그런데 아래의 예시의 경우에는 문제가 존재할지 궁금합니다.스레드1에서 코루틴1의 코드1은 ThreadLocal을 만들어 사용하다가 중단 지점에 걸려 멈췄습니다.그 후에 코루틴1의 코드2가 실행될 때, 스레드2에서 실행되었습니다.코드2에는 코드1에서 만든 ThreadLocal을 가져다 쓰는 경우스레드1에 종속적인 ThreadLocal을 스레드2에서 가져다 쓸 경우 문제가 발생할 것 같은데.. (1)코루틴에서 ThreadLocal을 사용하는 것은 안티패턴으로 취급될까요?이보다 좀 더 근본적인 질문으로 돌아가서 (2)코루틴을 사용할 때 ThreadLocal을 사용하는 게 자주 있는 일일까요?
-
미해결스프링 핵심 원리 - 고급편
ThreadLocal 질문입니다
동시성 이슈를 ThreadLocal을 사용하여 해결하는 내용 잘 들었습니다. 강의를 들으면서 ThreadLocal 관련하여 궁금한 점이 있습니다. 갑자기 트래픽이 몰려서 수 많은 요청이 들어오게 될 경우 ThreadLocal에도 동시에 많은 TraceId를 쓰게 될텐데 메모리의 이슈는 없을까요? 제가 생각한 답변은 "WAS가 제공하고 있는 스레드 풀이 허용하는 범위 내에서의 요청은 문제없다." 인데 만약 아니라면 답변 부탁드립니다. 추가적으로 비동기 서버 환경(ex. Spring Webflux)에서도 수 많은 요청시 동일한 이슈는 없을지 궁금합니다.
-
해결됨스프링 핵심 원리 - 고급편
ThreadLocal 동시성 이슈 (ArrayList, HashMap, HashSet)
안녕하세요! 김영한님!!수업 너무 유익하게 잘 듣고있습니다~!! 동시성 이슈를 막기 위해 ThreadLocal을 사용하는 부분 중에서 궁금한 점이 생겨서 질문 드립니다. String, TraceId의 타입에 대해서는 ThreadLocal을 사용해서 동시성 이슈를 해결하였는데, 필드로 ArrayList, HashMap, HashSet을 사용하고 싶은 경우에는 동시성 이슈를 어떻게 해결하면 될까요 ? 구글링을 했었을 때에는 멀티쓰레드 환경에서는 HashMap 대신에 ConcurrentHashMap을 사용해라고 봤었고, ArrayList 대신에 CopyOnWirteArrayList를 사용해라고 봤었고, HashSet에 대해서는 제대로 찾지 못했습니다. 멀티쓰레드 환경에서 Thread-Safe하게 ArrayList, HashMap, HashSet을 사용하려면 어떻게 해야하나요 ?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요! 질문이 있습니다.
안녕하세요 영한님! 항상 좋은 강의 감사드립니다. 수업을 들으면서 궁금한 사항이 생겨 질문드립니다. HttpServletRequest가 client의 요청마다 새로 생성되고 client의 요청 -> 응답 사이클 동안 유지되는 객체라면 혹시, threadLocal의 대안이 될 수도 있을까요?