2013-04-04 4 views
1

Я пишу приложение, которое слушает различные датчики. Он слушает их во время сеансов записи, и каждый сеанс включает прослушивание различных строк с различной продолжительностью (с смещениями). Когда сеанс записи заканчивается, все данные упаковываются в объект 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?

ответ

0

В конце я пошел с TimerTasks и планировал. Каждый раз, когда строка останавливается, она уведомляет сеанс записи и как только нет активных линий (что должно произойти со всеми линиями примерно в тот же момент), я перепланирую RecordingSession.