[java] Thread.sleep (x) 또는 wait ()를 사용할 때 예외가 발생합니다.

Java 프로그램을 지연 시키거나 절전 모드로 전환하려고했지만 오류가 발생했습니다.

내가 사용할 수 없습니다 해요 Thread.sleep(x)wait(). 동일한 오류 메시지가 나타납니다.

보고되지 않은 예외 java.lang.InterruptedException; 던지려면 잡히거나 선언해야합니다.

Thread.sleep()또는 wait()방법을 사용하기 전에 필요한 단계가 있습니까?



답변

당신은 당신보다 앞서 독서를 많이합니다. 컴파일러 오류부터 예외 처리, 스레딩 및 스레드 중단까지. 그러나 이것은 당신이 원하는 것을 할 것입니다 :

try {
    Thread.sleep(1000);                 //1000 milliseconds is one second.
} catch(InterruptedException ex) {
    Thread.currentThread().interrupt();
}


답변

다른 사용자가 말했듯이 try{...} catch{...}블록으로 통화를 둘러싸 야한다고 말했습니다 . 그러나 Java 1.5가 출시 된 이후 Thread.sleep (millis) 와 동일 하지만 더 편리한 TimeUnit 클래스 가 있습니다. 수면 작동을위한 시간 단위를 선택할 수 있습니다.

try {
    TimeUnit.NANOSECONDS.sleep(100);
    TimeUnit.MICROSECONDS.sleep(100);
    TimeUnit.MILLISECONDS.sleep(100);
    TimeUnit.SECONDS.sleep(100);
    TimeUnit.MINUTES.sleep(100);
    TimeUnit.HOURS.sleep(100);
    TimeUnit.DAYS.sleep(100);
} catch (InterruptedException e) {
    //Handle exception
}

또한 추가 방법이 있습니다 :
TimeUnit Oracle Documentation


답변

봐 가지고 이 우수한 간단한 포스트에서 적절하게이 작업을 수행하는 방법에 대한합니다.

본질적으로 :를 잡아라 InterruptedException. 이 catch-block을 추가해야합니다. 포스트는 이것을 조금 더 설명합니다.


답변

다음 코딩 구문을 사용하여 예외를 처리하십시오.

try {
  Thread.sleep(1000);
} catch (InterruptedException ie) {
    //Handle exception
}


답변

Thread.sleep시도 캐치 블록에 넣어

try {
    //thread to sleep for the specified number of milliseconds
    Thread.sleep(100);
} catch ( java.lang.InterruptedException ie) {
    System.out.println(ie);
}


답변

사용하는 경우 안드로이드 (I Java를 사용하는 경우에만 시간) 나는 잠에 실을 꿰기 대신 핸들러를 사용하는 것이 좋습니다 것입니다.

final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Log.i(TAG, "I've waited for two hole seconds to show this!");

        }
    }, 2000);

참조 : http://developer.android.com/reference/android/os/Handler.html


답변

이 시도:

try{

    Thread.sleep(100);
}catch(Exception e)
{
   System.out.println("Exception caught");
}