953061688145744
Park Hansu
  • 2016.6.30 17:26
  • 조회수 197
  • 답변수 1
953061688145744
Park Hansu
  • 2016.6.30 17:26
  • 조회수 197
  • 답변수 1

Thread는 static 클래스인가요?

예제 중 MusicBox 클래스 내에서 인스턴트를 만들지 않고 바로 사용하고 있길래 질문 드립니다. Thread는 static 클래스가 맞나요?
(생각해보니 지지난 강의에서도 따로 인스턴트를 만들지 않고 사용했었네요.)

그렇다면 쓰레드를 사용하지 않고(= main만 실행시키고), Thread.sleep() 메소드를 사용해서 프로그램을 실행 중에 잠시 멈추었다가 다시 실행할 수 있는 건가요?

  • #자바 중급
  • #쓰레드와 공유객체

1 답변

  • Spgjnhnsidwygch8ddkd
    Chandler
    • 2016.7.1 00:08

    Thread의 경우 자바 라이브러리(java.lang.Thread)에서 가져다 사용하는 것으로, 이미 구현되어 있는 함수를 가져다 쓰는 것입니다.
    간단한 예로, 자주 사용하는 System.out.println();의 경우 java.lang.System에서 가져와서 사용하죠. 이와 같이 Thread.sleep(); 도 라이브러리로 접근하여 사용하는 것입니다.

    static class란 정적 내부 클래스로

    public class Test
    {
        static class InnerClass{
            // 정적 내부 클래스
        }
    }
    

    내부클래스에 static이 붙어 선언된 클래스를 의미합니다.
    따라서, Thread 클래스는 static 클래스가 아닙니다.
    Thread 클래스의 내부를 본다면

    class Thread { // 실제 선언과는 다릅니다
        ...
        public static void sleep();
        ...
    }
    

    이런 식으로 선언 되어 있을텐데요. Thread 클래스는 내부 클래스가 아니기 때문에 정적 내부 클래스(static class)도 아니겠죠.

    두번째 질문의 답은 main도 sleep 메소드를 사용할 수 있나에 대해 물어보셨는데요.
    가능합니다. main도 하나의 thread이기 때문에 sleep메소드를 사용할 수 있습니다.

    static 클래스(정적 내부 클래스), static 메소드에 대해 공부하시면 더 이해하기 쉬울 것 같습니다.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.