我正在编写一个监听各种传感器的应用程序。它在录制会话中收听他们,每个会话包括在不同持续时间(带有偏移量)收听各种线路。当录制会话结束时,整个数据被打包到一个RecordingSession
对象中并发送到服务器。
记录会话之间总是有一个间隔:
####### RecordingSession 1 ######## ####### RecordingSession 2 ########
#|********* Line 1 **************|# #|********* Line 1 **************|#
# |********* Line 2 ******|# ** interval ** # |******** Line 2 ******|# ...
# |**** Line 3 ***|# # |**** Line 3 ***|#
################################### ###################################
我知道我可以使用 Java Timer
,然后TimerTasks
用偏移量安排各种持续时间。三个 TimerTasksLines
和一个用于存储RecordingSession
并创建一个新的。
现在我的问题是,应该可以将录制会话之间的间隔设置为 0(如下面的清单所示)。我希望,Timer
即使我设置了正确的时间,也不能保证每个定时任务的完美定时执行。每个Line
都有一个监听器,用于注册和注销线路的数据流(每个都有 TimerTask)。现在可能发生的情况是,如果我用 实现它TimerTasks
,可能会发生我在取消注册之前注册了一个监听器,然后取消注册会导致下一个 RecordingSession 中没有记录任何数据。
####### RecordingSession 1 ############### RecordingSession 2 ########
#|********* Line 1 **************|##|********* Line 1 **************|#
# |******** Line 2 ******|## |******** Line 2 ******|# ...
# |**** Line 3 ***|## |**** Line 3 ***|#
######################################################################
有没有比使用(嵌套)TimerTasks 和线程更好的方法来解决这个问题?