강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

임종민님의 프로필 이미지
임종민

작성한 질문수

스프링 핵심 원리 - 고급편

ThreadLocal - 예제 코드

저장 순서

해결된 질문

작성

·

110

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.

강의에서 sleep을 주석 처리하고나서

실행결과가 처음엔 B -> A로 나오더라고요
재실행했을 땐 A -> B 순서로 잘 나옵니다


그래서 주석을 다시 풀고 실행한 뒤
다시 주석 적용하고 실행시키니까
처음만 B -> A 순서로 나오고
그 뒤로는 A -> B 로 나오더라고요
신기해서 질문남겨봅니다

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 임종민님

처음 실행했을 때 B -> A 순서로 나온 것은 그 시점의 운영체제 스케줄러가 thread-B에게 먼저 CPU 시간을 할당했기 때문일 수 있습니다. 시스템 상태, 백그라운드 작업, JVM 내부 요인 등 다양한 이유로 첫 실행 시 스케줄링이 특정 방식으로 결정될 수 있습니다. 하지만 이후에 다시 실행했을 때 A -> B 순서가 일관되게 나왔다면, 이는 해당 프로그램의 특성(간단하고 실행 시간이 짧음)과 특정 실행 환경(운영체제, 하드웨어, JVM 버전 등)에서 스케줄러가 해당 스레드들에게 비교적 일관된 순서로 CPU 시간을 할당하는 경향을 보인 결과일 수 있습니다.

결론적으로, 스레드 실행 순서는 비결정적(non-deterministic)이며 실행 환경에 따라 달라질 수 있습니다. 특정 실행 순서(예: A 다음 B)가 여러 번 반복된다고 해서 그것이 항상 보장되는 것은 아닙니다. 강의에서 이 예제를 통해 보여주고자 한 핵심은 스레드의 실행 순서에 의존하면 동시성 문제가 발생할 수 있다는 것이며, 이러한 문제를 해결하기 위해 ThreadLocal과 같은 방법을 사용해야 한다는 점입니다.

감사합니다.

임종민님의 프로필 이미지
임종민
질문자

연휴에 신경써주셔서 감사합니다
이런 프로그램 실행 시 발생하는

현상들이 신기했는데 덕분에
잘 해결된 거 같습니다 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다. 임종민님.

먼저 질문해주신 강의는 ‘스프링 핵심 원리 - 고급편’이며, 순서와 관련된 문제를 언급하셨습니다. 말씀하신 상황은 특정 순서로 작동해야 하는 코드나 메서드가 일정하지 않게 실행되는 현상으로 보입니다. 이는 흔히 스레드 간의 불확실한 실행 순서로 인해 발생할 수 있습니다.

문제 설명 및 고려 사항

  • 스레드 관리: 주로 멀티스레딩 환경에서의 변수 상태나 Lock-Release 타이밍에 따라 실행 순서가 다르게 나타날 수 있습니다.
  • 캐싱 또는 최적화 문제: 실행 환경이나 캐시 등의 영향을 받아 실행 결과가 달라질 가능성이 있습니다.
  • 초기 상태 오버헤드: 가비지 컬렉션이나 JIT 컴파일러 최적화 등이 변수로 작용해 첫 실행 시에는 다른 결과가 나타날 수 있습니다.

관련 질문 & 추가 정보

  1. @Order 관련 동작이 다르게 나오는 원인과 해결책

    • Aspect 처리 시 발생하는 순서 제어의 문제점을 다루고 있으며, 특정 주입 순서나 실행 순서를 보장하기 위해 어떤 설정이 필요한지도 설명하고 있습니다.
  2. 이전 강의의 Aspect 실행 순서 문제에 대한 이해와 해결

    • @Order 애노테이션으로 인한 순서 보장 문제를 다루고 있어 어떻게 해결할 수 있을지 더 나은 이해를 제공합니다.

제안드린 링크에서 비슷한 문제를 다룬 다양한 질문을 보실 수 있으며, 이를 참조하시면 문제 해결에 도움이 되실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

임종민님의 프로필 이미지
임종민

작성한 질문수

질문하기