[英]Java - condition statement based on milliseconds
这里的一个简单问题是,我仅在经过特定时间段(以毫秒为单位)后才需要执行某种方法:
static double incrTrueBinaryErr = 62.5;
static double incrTrueBinaryMov = 31.25;
static double incr01001 = 360000;
static double incr_1101 = 125;
static double incr05008 = 3600000;
static double incr10004 = 1024000;
static double incr22000 = 1000;
static double incr22001 = 1000;
Date currDate;
while (true)
{
currDate = new Date();
if (currDate.getTime() == currDate.getTime() + incrTrueBinaryErr)
//do stuff
if (currDate.getTime() == currDate.getTime() + incrTrueBinaryMov)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr01001)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr_1101)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr05008)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr10004)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr22000)
//do stuff
if (currDate.getTime() == currDate.getTime() + incr22001)
//do stuff
}
但是,由于时间间隔的具体程度,我的程序从不执行任何操作。
这样做的最佳方法是什么?
这种表达式currDate.getTime() == currDate.getTime() + incr01001
仅在incr01001 == 0
计算为true
。 出于相同的原因,仅当y == 0
时x == x + y
。
要仅在经过特定时间段(以毫秒为单位)后执行某种方法:
您可以使用Thread.sleep(long milliseconds)
方法来做到这一点。
try{
Thread.sleep(5000);//for 5 seconds
} catch(Exception ex){
System.out.println("Error: "+ex.getMessage());
}
首先尝试让时间超出您的while封锁时间:
Date date = new Date();
while (true)
{
currDate = new Date();
if (currDate.getTime() == date.getTime() + incrTrueBinaryErr)
//do stuff
//etc.
}
这样,while循环不会一直重新分配日期。
正如您所说,它可能也太具体了,因此对于您的if
块可能是:
long timeDifference = date.getTime()+incrTrueBinaryErr-currDate.getTime();
if (Math.abs(timeDifference)<5l)
//do stuff
如果新时间在您想要的5毫秒之内,请“执行操作”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.