5 초 후에 실행하려는 특정 기능이 있습니다. Java로 어떻게 할 수 있습니까?
javax.swing.timer를 찾았지만 사용법을 이해할 수 없습니다. 이 클래스가 제공하는 것보다 더 간단한 방법을 찾고있는 것 같습니다.
간단한 사용 예를 추가하십시오.
답변
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// your code here
}
},
5000
);
편집하다:
javadoc 는 말한다 :
Timer 객체에 대한 마지막 실시간 참조가 사라지고 모든 미해결 작업이 실행을 완료하면 타이머의 작업 실행 스레드가 정상적으로 종료됩니다 (가비지 수집 대상이 됨). 그러나이 문제가 발생하는 데 시간이 오래 걸릴 수 있습니다.
답변
이 같은:
// When your program starts up
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
// then, when you want to schedule a task
Runnable task = ....
executor.schedule(task, 5, TimeUnit.SECONDS);
// and finally, when your program wants to exit
executor.shutdown();
Executor
풀에 더 많은 스레드가 필요한 경우 대신 사용할 수있는 다양한 다른 팩토리 메소드 가 있습니다.
그리고 완료되면 실행 프로그램을 종료하는 것이 중요합니다. 이 shutdown()
메소드는 마지막 작업이 완료되면 스레드 풀을 완전히 종료하고 이러한 상황이 발생할 때까지 차단합니다. shutdownNow()
스레드 풀을 즉시 종료합니다.
답변
사용 예 javax.swing.Timer
Timer timer = new Timer(3000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// Code to be executed
}
});
timer.setRepeats(false); // Only execute once
timer.start(); // Go go go!
이 코드는 한 번만 실행되며 3000ms (3 초) 내에 실행됩니다.
camickr가 언급했듯이 짧은 소개를 보려면 ” 스윙 타이머 사용 방법 “을 찾아야합니다 .
답변
내 코드는 다음과 같습니다.
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
// your code here, and if you have to refresh UI put this code:
runOnUiThread(new Runnable() {
public void run() {
//your code
}
});
}
},
5000
);
답변
@tangens의 변형으로 가비지 수집기가 스레드를 정리할 때까지 기다릴 수 없으면 run 메소드 끝에서 타이머를 취소하십시오.
Timer t = new java.util.Timer();
t.schedule(
new java.util.TimerTask() {
@Override
public void run() {
// your code here
// close the thread
t.cancel();
}
},
5000
);
답변
원래 질문에는 “스윙 타이머”가 언급되어 있습니다. 실제로 질문이 SWing과 관련이 있다면 util.Timer가 아닌 Swing Timer를 사용해야합니다.
자세한 내용은 Swing 자습서에서 ” 타이머 사용 방법 “섹션을 읽으십시오 .
답변
Thread.Sleep () 함수를 사용할 수 있습니다
Thread.sleep(4000);
myfunction();
4 초 후에 기능이 실행됩니다. 그러나 이것은 전체 프로그램을 일시 중지시킬 수 있습니다 …