강의로 돌아가기
-

Thread는 static 클래스인가요?

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

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

1 개의 답변
정찬형

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 메소드에 대해 공부하시면 더 이해하기 쉬울 것 같습니다.

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