【发布时间】:2014-06-16 21:55:33
【问题描述】:
我有一个传感器,它在随机时间以高频率接收数据,我需要一个以指定频率(例如每秒 1 个数据点)指定大小(例如 60 个数据点)的滚动时间序列窗口。
采样值应该是从传感器读取的最新值(即读数之间的所有其他值都应该被丢弃)。
我认为某种生产者-消费者模式在这里是合适的,但由于我缺乏并发方面的经验,我正在努力实现适当且高效的实现。
当我想消费所有产生的数据时,我知道ArrayBlockingQueue 是一个很好的数据结构可供选择,但在这种情况下,我只想消费最新产生的值(或者如果没有产生值,则值前一个时期),并且这个频率恰好是指定的频率(例如每秒一次)。
【问题讨论】:
-
那么,对于过去 60 秒的每一秒,您想要在那一秒内收到的最新样本值吗?
标签: java multithreading concurrency thread-safety sampling