2014-03-29 3 views
1

안녕하세요, 모든 당신을 귀찮게해서 죄송합니다. 저는 runnable을 구현 한 클래스가 있습니다. 그런 다음 thread.sleep을 사용하여 간격을두고 작은 프로그램을 실행하는 run() 메소드가 있습니다.() .- 이것은 문제없이 작동하며 코드를 주기적으로 실행합니다.Java 스레딩 및 .sleep() 혼동

그러나 클래스 내에서 다른 메서드 내에서 thread.sleep()을 사용하는 방법에 대해 혼란스러워합니다. 올바른 방향으로 나를 자극 할 수 있습니까?

사과하는 경우 사전에 간단합니다.

코드 예제 :

// Search product: returns list of matching titles 
    public String[] find_titles(String title) throws RemoteException{ 
    try { 
      Thread.sleep(5000);           //pause execution for 2s 
     } catch(InterruptedException e) { 
      //error running the thread! 
      System.exit(1); 
    } 
    ... 
    } 
+3

왜'Thread.sleep'은 그 위치에 따라 달라질까요? 코드는 코드입니다. –

+0

때문에 작동하지 않는 친구! – TotalNewbie

+1

코드는 현재 스레드를 잠자기 상태로 설정합니다. 다른 스레드가없는 백그라운드 스레드에서이 메서드를 호출하면 프로그램의 상태가 변경 될 수 있습니다. 문맥없이 귀하의 질문에 답할 수 없습니다. 나를 위해, 나는 아직도 그것이 당신이 무엇을 요구하고 있는지에 관해서는 완전히 혼란 스럽다. 현재의 답변이 당신의 질문에 대한 답변이라면, 나는 그들이 생각하는 것보다 낫습니다. 그렇지 않다면 문제를 이해하는 데 필요한 모든 세부 정보를 제공하여 질문을 개선하고 싶을 것입니다. –

답변

3

Thread.sleep()Thread 클래스의 정적 메소드입니다. 즉, 현재 실행중인 스레드 만 잠자기 상태가됩니다.

은 정밀도와 시스템 타이머와 스케줄러의 정확성에 따라 지정된 밀리 초, (일시적으로 실행을 정지) 잠을 현재 실행중인 스레드가 발생합니다 말한다 Thread.sleepJavaDoc 당으로

. 스레드는 모니터의 소유권을 잃지 않습니다.

는 스레드가 절전 될 것 Thread.sleep() 메소드를 호출하는 위치에 대한 Pausing Execution with Sleep

지금은 달려 자세한 내용은 여기를 참조하세요.

나는 당신에게 명확하길 바란다.

4

Thread.sleep()는 현재 스레드가 잠을하게됩니다. 주 실행 스레드에서 이것을 사용하면 주 프로그램이 일시 중지되고 다른 작업을 수행하지 않습니다. 주 스레드가 Thread.sleep()을 호출 할 때 스레드가 일시 중지되는 실행 가능 파일을 호출하거나 주 스레드가 실행 중이면 다른 스레드가 계속 실행됩니다.

+0

다른 메서드에서 이것을 사용하고 thread.sleep (5000)을 호출했을 때를 참조하십시오. 실행이 일시 중지 된 것 같지 않습니다. – TotalNewbie

+2

@TotalNewbie case는 몇 가지 샘플 코드와 함께 적절한 설명을 제공합니다. –

+0

Thread.sleep (5000)은 5 천 밀리 초 또는 5 초임에 유의하십시오. 눈에 잘 띄지 만, 5000 초를 기다리고 있다면 상당히 다를 것입니다! – DeanDP