Java 타임 퀘스트의 세 가지 실현 방법
1. 일반thread
이것은 가장 흔히 볼 수 있는thread를 만들어서while 순환에서 계속 실행되도록 하고sleep 방법을 통해 정시 작업의 효과를 얻을 수 있습니다.이렇게 하면 신속하고 간단하게 실현할 수 있다. 코드는 다음과 같다
public class Task1 {
public static void main(String[] args) {
// run in a second
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
System.out.println("Hello !!");
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
2. Timer와 TimerTask로위의 실현은 매우 빠르고 간편하지만, 그것도 일부 기능이 부족하다.Timer와 TimerTask를 사용하면 위의 방법에 비해 다음과 같은 이점이 있습니다.
1. 작업을 시작하고 취소할 때 제어할 수 있습니다. 2.첫 번째 작업을 수행할 때 원하는 딜레이 시간을 지정할 수 있습니다.
실현할 때 Timer 클래스는 임무를 스케줄링할 수 있고, TimerTask는 run() 방법에서 구체적인 임무를 실현할 수 있다.Timer 인스턴스는 다중 작업을 스케줄링할 수 있으며 스레드가 안전합니다.Timer의 구조기가 호출되었을 때, 작업을 스케줄링할 수 있는 라인을 만들었습니다.다음은 코드:
import java.util.Timer;
import java.util.TimerTask;
public class Task2 {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 1 * 1000;
// schedules the task to be run in an interval
timer.scheduleAtFixedRate(task, delay,
intevalPeriod);
} // end of main
}
이런 종류는 JDK 1.3부터 존재한다.3. ScheduledExecutor Service
ScheduledExecutorService는 Java SE 5의 java입니다.util.concurrent에서 병발 도구류로 도입된 것이 가장 이상적인 정시 임무 실현 방식이다.이전 두 가지 방법에 비해 다음과 같은 이점이 있습니다.
1. Timer의 단일 스레드에 비해 스레드 탱크를 통해 작업을 수행합니다. 2.첫 번째 임무 수행 시간을 유연하게 설정할 수 있습니다.실행 시간 간격을 설정하기 위해 좋은 약정을 제공하다
다음은 코드를 실현하는 것입니다. 우리는 ScheduledExecutor Service #schedule AtFixedRate를 통해 이 예를 보여 줍니다. 코드 안의 매개 변수 제어를 통해delay 시간을 처음으로 실행했습니다.
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Task3 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheduledExecutorService service = Executors
.newSingleThreadScheduledExecutor();
service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.