프로그램이 실행되기 시작한 이후 시간을 평가하는 if 문이 있으며 시간이 특정 임계 값을 초과하면 뭔가 수행합니다. 이 if 문을 프로그램이 실행되는 동안 내내 점검하고 동시에 프로그램을 계속 실행 시키길 원합니다. 이 일을 어떻게 하죠?Java : 실행 계속 if 문
감사합니다.
프로그램이 실행되기 시작한 이후 시간을 평가하는 if 문이 있으며 시간이 특정 임계 값을 초과하면 뭔가 수행합니다. 이 if 문을 프로그램이 실행되는 동안 내내 점검하고 동시에 프로그램을 계속 실행 시키길 원합니다. 이 일을 어떻게 하죠?Java : 실행 계속 if 문
감사합니다.
가장 쉬운 방법은 Timer
을 사용하는 것입니다. 이를 통해 if
로직이 필요하지 않습니다. TimerTask
을 예약 할 때 firstTime
인수를 사용할 수 있습니다.
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// do something
}
};
// schedule the task to be run every 100ms (0.1 sec),
// starting after "threshold" milliseconds have past
timer.schedule(task, threshold, 100);
그것은 당신이 시간 임계 값이 초과 된 후 반복적으로 "무언가를"원하는 경우 설명에서 명확하지, 아니면 그냥 다음 일정 시간이 경과 할 때까지 기다려야 원하는 경우 한 번 "무언가를" . 위의 코드는 반복되는 경우입니다. 당신이 스윙을 사용하는 경우
timer.schedule(task, threshold);
, 당신은 java.util.Timer보다는 스윙 Timer를 사용한다 : 미래의 어느 시점에서 원샷 발생의 경우, 마지막 행을 변경합니다. 자세한 내용은 How to Use Swing Timers을 참조하십시오.
편집 : 귀하의 의견은 약간의 것들을 명확히했습니다. 그것은 당신이 설명 일을 상당히 쉽게 : "무언가를"와 "다른 일을 할"수 있습니다 방법은 바깥 쪽 클래스에 호출
Timer timer = new Timer();
TimerTask task = new TimerTask() {
private final long start = System.currentTimeMillis();
@Override
public void run() {
if (System.currentTimeMillis() - start < threshold) {
// do something
} else {
// do something else
}
}
};
// schedule the task to be run every 100ms (0.1 sec), starting immediately
timer.schedule(task, 0, 100);
하는 것으로.
더 깨끗한 접근법은 다른 시간에 실행되도록 예약 된 여러 개의 TimerTask
을 정의하는 것일 수 있습니다. 예외를 트리거하는 "다른 것"태스크는 임계 시간에 한 번 실행하도록 스케줄 될 수 있습니다. 개별 작업을 취소 할 수도 있으며 다른 작업을 취소 할 작업을 예약 할 수도 있습니다.
내가 분명히하게해서 미안해. 시간이 만료 될 때까지 run() 메서드를 실행하면 프로그램이 다른 작업을 수행합니다 (예외가 발생할 가능성이 있음). 타이머를 통해이를 지정하는 방법이 있습니까? – user760220
@ user760220 - 쉽게 할 수 있습니다. 나는 한 가지 접근법을 보여주기 위해 나의 대답을 확장했다. –
run() 메서드를 한 번만 수행하는 방법이 있습니까? – user760220
자바 스레드를 사용하십시오. –
새로운'Thread'를 생성하십시오 - 코드에 루프로'Runnable'을 전달하십시오. [동시성 학습] (http://docs.oracle.com/javase/tutorial/essential/concurrency/)을 살펴보십시오. –
좋은 온라인 자습서가 있는지 확실하지 않지만 [Java Concurrency in Practice] (http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601)는 스레딩에 대해 배우기위한 멋진 책입니다. Java에서. –