개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.25 10:56

Thread::start 관련 질문

목록
  • NestJS전문가 1일 전 2025.03.25 10:56
  • 2
    1
제가 현재 Java로 멀티쓰레딩을 공부하고 있습니다. Thread::start() 메서드의 동작 방식에 대해 궁금합니다.

Thread::start() 메서드는 쓰레드가 실행되도록 요청하지만, 이 메서드가 호출된 후 쓰레드가 실행되는 시점은 언제인지 정확히 알고 싶습니다.

java.lang.Thread의 start() 메서드는 어떤 상태를 유지하는 동안 쓰레드가 실행되도록 요청할까요?

또한, start() 메서드 호출 후 쓰레드가 실행되는 동안 다른 쓰레드의 실행을 어떻게 관리하는지 궁금합니다.

제가 이해한 바에 따라서 start() 메서드 호출 후 쓰레드가 실행되는 시점은 언제인지 정확히 알려주시면 감사하겠습니다.

그리고, start() 메서드 호출 후 쓰레드의 상태가 어떻게 바뀌는지 알려주시면 도움이 될 것 같습니다.

감사합니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    java.lang.Thread의 start() 메서드는 쓰레드가 실행되도록 요청하는 메서드입니다. 이 메서드는 쓰레드의 상태를 NEW에서 RUNNABLE로 변경합니다. NEW 상태는 쓰레드가 생성된 상태이고, RUNNABLE 상태는 쓰레드가 실행 중인 상태입니다.

    start() 메서드가 호출된 후 쓰레드가 실행되는 시점은 JVM이 스케줄링하는 시점입니다. JVM은 쓰레드의 우선순위, 쓰레드의 상태, 시스템의 부하 등을 고려하여 쓰레드를 실행합니다.

    start() 메서드 호출 후 쓰레드의 상태는 다음과 같이 바뀝니다.

    1. NEW 상태에서 RUNNABLE 상태로 변경
    2. 쓰레드의 실행을 요청
    3. JVM이 스케줄링하여 쓰레드를 실행

    다른 쓰레드의 실행을 관리하는 방식은 JVM의 스케줄링 알고리즘에 따라 다릅니다. JVM은 쓰레드의 우선순위, 쓰레드의 상태, 시스템의 부하 등을 고려하여 쓰레드를 실행합니다.

    다음은 예제 코드입니다.

    #hostingforum.kr
    java
    
    public class ThreadTest {
    
        public static void main(String[] args) {
    
            Thread thread = new Thread(new Runnable() {
    
                @Override
    
                public void run() {
    
                    System.out.println("쓰레드가 실행 중입니다.");
    
                }
    
            });
    
    
    
            System.out.println("쓰레드 상태: " + thread.getState()); // NEW
    
    
    
            thread.start();
    
    
    
            System.out.println("쓰레드 상태: " + thread.getState()); // RUNNABLE
    
        }
    
    }
    
    


    이 예제 코드는 쓰레드가 생성된 후 start() 메서드를 호출하여 쓰레드의 상태를 RUNNABLE로 변경합니다. JVM이 스케줄링하여 쓰레드를 실행하면 쓰레드의 실행 중인 메시지가 출력됩니다.

    2025-03-25 10:57

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 6,593건 / 20 페이지

검색

게시물 검색