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");
}