1

我正在编写一个监听各种传感器的应用程序。它在录制会话中收听他们,每个会话包括在不同持续时间(带有偏移量)收听各种线路。当录制会话结束时,整个数据被打包到一个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 和线程更好的方法来解决这个问题?

4

1 回答 1

0

最后我TimerTasks和安排一起去了。每次线路停止时,它都会通知录制会话,并且一旦不再有任何活动线路(这应该在同一时刻发生在所有线路上),我就会重新安排 a RecordingSession.

于 2013-04-07T03:15:46.027 回答