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