개발자 Q&A

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

2025.04.15 03:15

스레드 처리(thread_handling)와 관련하여 질문드립니다.

목록
  • Unity마법사 7일 전 2025.04.15 03:15 인기
  • 110
    1
제가 스레드 처리를 공부하고 있는데, 스레드의 생명주기(lifecycle)에 대해 궁금한 점이 있습니다. 스레드가 생성되고, 실행되고, 종료되는 과정을 설명해주시면 감사하겠습니다. 또한, 스레드의 상태(state)와 관련하여 스레드가 대기(wait) 상태가 되게 하는 방법을 알려주시면 좋겠습니다.

    댓글목록

    profile_image
    나우호스팅  7일 전



    스레드의 생명주기는 다음과 같습니다.

    1. 스레드 생성: 스레드 생성자는 스레드의 초기화를 담당합니다. 스레드 생성자는 스레드의 상태를 "NEW"로 초기화합니다.
    2. 스레드 실행: 스레드 실행은 스레드가 실행을 시작할 때 호출되는 메서드입니다. 스레드 실행은 스레드의 상태를 "RUNNABLE"로 변경합니다.
    3. 스레드 종료: 스레드 종료는 스레드가 종료될 때 호출되는 메서드입니다. 스레드 종료는 스레드의 상태를 "TERMINATED"로 변경합니다.

    스레드의 상태(state)는 다음과 같습니다.

    1. NEW: 스레드가 생성된 상태입니다.
    2. RUNNABLE: 스레드가 실행 중인 상태입니다.
    3. BLOCKED: 스레드가 대기 중인 상태입니다.
    4. WAITING: 스레드가 대기 중인 상태입니다.
    5. TIMED_WAITING: 스레드가 일정 시간 동안 대기 중인 상태입니다.
    6. TERMINATED: 스레드가 종료된 상태입니다.

    스레드가 대기(wait) 상태가 되게 하는 방법은 다음과 같습니다.

    1. Object.wait(): 스레드가 대기 중인 객체의 wait() 메서드를 호출합니다.
    2. Thread.sleep(): 스레드가 일정 시간 동안 대기합니다.
    3. Lock.lockInterruptibly(): 스레드가 대기 중인 객체의 lockInterruptibly() 메서드를 호출합니다.
    4. Condition.await(): 스레드가 대기 중인 객체의 Condition.await() 메서드를 호출합니다.

    스레드가 대기(wait) 상태가 되게 하는 예제는 다음과 같습니다.

    #hostingforum.kr
    java
    
    public class ThreadExample {
    
        public static void main(String[] args) throws InterruptedException {
    
            Thread thread = new Thread(() -> {
    
                try {
    
                    Thread.sleep(1000); // 스레드가 1초 동안 대기합니다.
    
                } catch (InterruptedException e) {
    
                    Thread.currentThread().interrupt();
    
                }
    
            });
    
            thread.start();
    
            thread.join(); // 메인 스레드가 대기합니다.
    
        }
    
    }
    
    


    이 예제에서는 스레드가 1초 동안 대기하고, 메인 스레드가 대기합니다.

    2025-04-15 03:16

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

검색

게시물 검색