应用程序的开发过程中,大家都经常用的定时器去轮询一些数据,当这些数据有变化时
它不会主动向你发request,只有你不断的向它发送request,它才能给你response,你才
能维护自己的数据是最新的,这种情况,想必大家都会想到定时器,用java框架的定时器做
当然没错。
然而,在某些需求下,当这个业务启用时,你才需要去轮询这些数据。传统的定时器,
当应用服务器启动时,定时器就会间断地执行,这些当然占有系统资源,怎样才能应付着样
需求,在启动某项业务是才开启定时器,当这种业务结束定时器。你们肯定有自己的办法,
我对传统的定时器操作不太精通,变换了一下思路,有逻辑来代替定时器的,实现了这种需
求。下面举个小例子来说明。
public static void main(String[] args) {
Long l=new Date().getTime();//获得当前系统时间
while(true){
if((new Date().getTime()-l)==5000){//轮询停止的条件
System.out.println(new Date().getTime());
break;
}
System.out.println(new Date().getTime());//轮询时执行的业务
try {
Thread.sleep(1000);//轮询的间隔,相当于定时器的间隔时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通过上面的逻辑,我们也可以实现灵活的定时器。
如有错误,欢迎指正。
它不会主动向你发request,只有你不断的向它发送request,它才能给你response,你才
能维护自己的数据是最新的,这种情况,想必大家都会想到定时器,用java框架的定时器做
当然没错。
然而,在某些需求下,当这个业务启用时,你才需要去轮询这些数据。传统的定时器,
当应用服务器启动时,定时器就会间断地执行,这些当然占有系统资源,怎样才能应付着样
需求,在启动某项业务是才开启定时器,当这种业务结束定时器。你们肯定有自己的办法,
我对传统的定时器操作不太精通,变换了一下思路,有逻辑来代替定时器的,实现了这种需
求。下面举个小例子来说明。
public static void main(String[] args) {
Long l=new Date().getTime();//获得当前系统时间
while(true){
if((new Date().getTime()-l)==5000){//轮询停止的条件
System.out.println(new Date().getTime());
break;
}
System.out.println(new Date().getTime());//轮询时执行的业务
try {
Thread.sleep(1000);//轮询的间隔,相当于定时器的间隔时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
通过上面的逻辑,我们也可以实现灵活的定时器。
如有错误,欢迎指正。