매일 오전 1시에 특정 타이밍에 Java 코드를 트리거하려고합니다. while loop
가 실행 유지하려면, 그것은 컴퓨터를 느리게, 또는 처리 자원을 먹는 것,'while 루프'가 무한한 리소스를 소모합니다.
while (true) {
if (currentTime = 1AM) {
doSomething;
}
}
나는 조금 걱정입니다 :
나는 다음과 같이 스레드를 쓰기?첫 번째 질문은 초당 1 회만 반복하면 더 좋을까요? 이 경우 내 두 번째 질문은
while (true) {
if (currentTime = 1AM) {
doSomething;
}
Thread.sleep(1000);
}
, 나는 우리가 다음과 같은 while loop
를 작성하는 경우 자바 잠금을 획득하기 위해 대부분의 시간, 사람이 얼마나 비싼 설명 할 수 while loop
아래와 같이 작성 볼 시간 (죄송합니다 매우 기본적인 질문입니까?)
while (isLock) {
// do nothing
}
doThisIfNoLock();
나는 내부 실제로 스레드에 의해 먹고, 얼마나 많은 자원 (처리 능력)을 나는 빈 스레드를 만들 경우, 위의 생각을 확장하고, 무한 빈
while loop
? 내 상상력에 따라 루프 내부에 내용이 없으므로 루프가 매우 빠르게 실행되어 많은주기의 CPU 전력을 소비하게됩니다. 그게 사실이야?
이러한 작업을 수행 할 스케줄러가 있습니다. Quartz Scheduler를 살펴보십시오. Spring을 사용하는 경우, 그러한 일을 스케줄 할 수 있습니다. 당신의 접근 방식은 나쁘다 – TheLostMind
'java.util.Timer'도 당신이 시도하는 것보다 낫다. –
루프 동안 무한한 실행할 수 없습니다. 그것은 리소스를 빨아 들이고 처리 속도를 느리게합니다. 대신 스케줄러를 사용하십시오. – Rish