我的应用程序中有一个Thread,它一直运行直到应用程序停止。
我想将其行为更改为仅在上午9点到下午6点的时间段内运行,而不管日期
根据以下建议,我已经这样做了 如果这有任何负面影响,请告诉我。
package com;
import java.util.Calendar;
public class ContinousThread extends Thread {
public void run() {
while (true) {
Calendar c = Calendar.getInstance(); // is automatically initialized to
int hour = c.get(Calendar.HOUR_OF_DAY);
boolean run = hour >= 9 && hour < 18;
if (run) {
doSomething();
} else {
System.out.println("No");
}
}
}
public void doSomething() {
// actual task
}
public static void main(String args[]) {
ContinousThread ct = new ContinousThread();
ct.start();
}
}
答案 0 :(得分:3)
使用Calendars get(field)方法获取小时:
Calendar c = Calendar.getInstance(); // is automatically initialized to current date/time
int hour = c.getField(Calendar.HOUR_OF_DAY);
boolean run = hour >= 9 && hour < 18;
答案 1 :(得分:2)
我已经这样做了,请告诉我这是否有任何负面影响 冲击
有。
boolean run = hour >= 9 && hour < 18;
if (run) {
doSomething();
} else {
System.out.println("No");
}
当run
为false
时,您有"busy loop"。这会让cpu忙,非常忙。并在控制台上打印吨 No
。
一种方法是在sleep
块中放置else
。你可以在18:00
长时间睡觉,计算你与下一个9:00
的距离,然后睡多少(或少一点)