for (;;) {
Date date = new Date();
int count = 1;
if (date.getDay() == 1) {
if(count==1){
System.out.println("start thread");
count++;
}
}
try {
sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
}
我编写的这个会陷入死循环星期一执行很多次,但是我想让它星期一只执行一次,其他的日期一直检查是不是到了星期一。如果是星期一,程序只执行一次。有没有人知道怎么实现这个功能?
Date date = new Date();
int count = 1;
if (date.getDay() == 1) {
if(count==1){
System.out.println("start thread");
count++;
}
}
try {
sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
}
我编写的这个会陷入死循环星期一执行很多次,但是我想让它星期一只执行一次,其他的日期一直检查是不是到了星期一。如果是星期一,程序只执行一次。有没有人知道怎么实现这个功能?
boolean isStarted = false;
if (date.getDay() == 1) {
if(!isStarted){
System.out.println("start thread");
isStarted = true;
}
}else{
if(isStarted){
isStarted = false;
}
}
而你的程序中的判断条件date.getDay() == 1 应该是1天才执行一次。
如果不管星期一什么时候执行的话,那就把200改成1000*3600*24
如果要求星期一某个小时执行的话,毫秒改小点,判断条件再加条件
如果时间要求不是很实时的话,可以用Timer。如果很实时推荐用quartz
int day_of_week = Calendar.MONDAY;
String cmd = "C:\\Program Files\\TTPlayer\\TTPlayer.exe";
wakeAt(day_of_week, cmd);
} public static void wakeAt(int dayOfWeek, String cmd) throws Exception{
Conica.pl("starting.....");
while(true){
Calendar current = Calendar.getInstance();
if(current.get(Calendar.DAY_OF_WEEK) == dayOfWeek) {
Runtime.getRuntime().exec(cmd);
}
Thread.currentThread().sleep(1000);
}
}
}