定时采集时间控制方式

定时采集时间控制方式探讨

 

       开发监控系统中经常会碰到数据采集模块的开发,本文探讨一下如何控制采集周期以获得更好的效果。

       周期控制方式分为三类:1。定时周期;2。固定等待周期;3。可变等待时间周期。

1.  定时周期:

定时周期方式指以定时器的方式定时启动采集线程。周期控制不受采集线程执行情况的影响,定时器以周期的方式定时开启新线程,而不管之前开启的线程是否已执行完成。这种方式的优点是周期控制的精确度只取决于计算机时钟精度及处理能力,可以很好的控制采集周期。但是当周期设置过相对采集线程运行时间过短,将会导致同一时间会存在几个并行的采集线程,可能会发生线程或资源冲突。

 

 

如图所示:共有6个时间节点,假设采集任务执行时间需要三个节点,而时间周期为1个节点,所以在34两个时间节点间可能存在三个任务并行执行的情况。如果执行时间更长,周期更短,那么并行的线程数会更多。

        这种方式适用于采集任务时间短于周期,且对时间精度要求高的应用中。采集任务时间长于周期的需要解决冲突问题。

 

 

2.  固定等待周期:

固定等待周期是指在任务执行前后的等待时间都为固定时间,这个时间称为周期,但并不是真正的周期。如下图所示,实际上的周期为采集任务执行时间加上周期等待时间,周期等待时间为固定时间,而且采集任务时间是可变的,因此也并不好缩短等待时间来控制周期。这种方式的好处是工作过程中可以以单线程的方式实现,不会发生线程或资源冲突的情况。但是时间精度不好,采集任务执行时间会累积起来影响采集周期,如图所假设采集任务执行时间为四分之一个周期,结果四次采集执行后占用了5个时间节点的时间,时间累积使得采集结果产生了时间间隙。假设以秒为单位的采集,可以在连续的34353637秒之间少掉了35秒的对应值,影响采集结果的计算。

        这种方式只适用于对时间精度要求不高的场合。

图中短黑箭头表示采任线程执行,线长红箭头表示周期等待时间。

 

 

3.  可变等待周期:

可变等待周期是指根据任务执行时间自动调整等待时间,以便获得较为合理的周期控制。经测试java.util.Timer属于这种方式。

        这种方式的基本思想是如果采集线程执行时间<周期,那么等待时间=周期—采集线程执行时间。如果采集线程执行时间>周期,那么等待时间为0,即不再等待,当然实际周期大于设定周期,将会导致以后的采集周期偏离预定周期,同样这种情况对计算也不利。

        这种方式可以自动调整等待时间,同样保持只有一个采集线程,在实际不稳定的环境中缺少很好的时间精度控制,但具有较好稳定性,是一种比较折中的办法。

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值