Я пишу приложение, которое слушает различные датчики. Он слушает их во время сеансов записи, и каждый сеанс включает прослушивание различных строк с различной продолжительностью (с смещениями). Когда сеанс записи заканчивается, все данные упаковываются в объект RecordingSession
и отправляются на сервер.Что хорошего для достижения точного временного выполнения?
Существует всегда интервал между сессиями записи:
####### RecordingSession 1 ######## ####### RecordingSession 2 ########
#|********* Line 1 **************|# #|********* Line 1 **************|#
# |********* Line 2 ******|# ** interval ** # |******** Line 2 ******|# ...
# |**** Line 3 ***|# # |**** Line 3 ***|#
################################### ###################################
Я знаю, что я мог бы использовать в Java Timer
и затем график TimerTasks
для различных длительностей со смещением. Три таймера для Lines
и один для хранения RecordingSession
и создания нового.
Теперь моя проблема заключается в том, что можно установить интервал между сеансами записи на 0 (как в приведенном ниже списке). Я ожидаю, что Timer
, даже если бы я установил правильные времена, не гарантирует идеальное время выполнения каждой заданной по времени задачи. Каждый Line
имеет прослушиватель, который регистрирует и отменяет регистрацию потока данных линии (каждый из них будет иметь TimerTask). Теперь, что может случиться, это то, что если я реализую его с TimerTasks
, может случиться так, что я зарегистрирую прослушиватель, прежде чем я его не зарегистрирую, а затем без регистрации приведет к тому, что никакие данные не будут записаны в следующей записи.
####### RecordingSession 1 ############### RecordingSession 2 ########
#|********* Line 1 **************|##|********* Line 1 **************|#
# |******** Line 2 ******|## |******** Line 2 ******|# ...
# |**** Line 3 ***|## |**** Line 3 ***|#
######################################################################
Есть ли лучший подход для решения этой проблемы, чем с (вложенными) TimerTasks и Threads?