java real time design rtsj
I am thinking how to build a real-time system using java without Sun Real-time System API.
Say, a boss generates an event at 11:00 am, he has to get feedback at 11:10 am. Если нет никаких отзывов, он отправит его событие.
Персонал получает событие своего босса в 11:01, ему нужно уйти 1 минуту, чтобы отправить результат своему боссу. Так что на самом деле у него есть 8 минут, чтобы сделать свою работу. В 11:09 он должен отправить отзыв, независимо от того, закончил он или нет.
Это система реального времени, не так ли?
В таком случае, как спроектировать нашу систему с использованием Java? Это модель производитель-потребитель. Что касается потребителя, какой объект (blockingqueue, delayqueue ...) использовать для удовлетворения этого требования?
Любая веб-ссылка с открытым исходным кодом будет приветствоваться.
Поблагодарить.
2 ответа
Вы не можете заниматься программированием в реальном времени в реальном компьютерном смысле в Java. Вы находитесь во власти планировщика потоков и операционной системы с совершенно неизвестными базовыми свойствами. Если ОС захотела подождать до 11:20, пока она не вернулась к предоставлению JVM некоторого процессорного времени, это ее дело.
Если вы имеете в виду "в реальном времени" в Microsofty, как в "Вещи реагируют очень быстро, и мы стараемся никогда не блокировать основной поток пользовательского интерфейса", который не имеет четко определенного технического значения. Это просто означает, что "пользовательский код архитектуры должен создавать видимость, которую им не нужно ждать на компьютере".
--edit в ответ на комментарий.
Если под 11:08 вы имеете в виду "между 11:07:59 и 11:08:01", то обычная Java, как правило, может сделать это для вас на современной платформе с тщательным программированием. Чего он не может добиться, так это ситуации, когда событие, происходящее в 11:08:01, считается дефектом платформы, это просто не дает такой гарантии.
Когда мы говорим "в реальном времени" и для чего нужен RTS API, ситуация выглядит примерно так: "Связывающая головка должна находиться в этих координатах ровно в этой миллисекунде, если она опаздывает более чем на полсекунды, деталь будет повреждена, и если это более чем на 2 миллисекунды раньше, сервопривод за 300 000 долларов может врезаться в свои подшипники и вызвать сбой сборочной линии в 10 000 000 долларов ".
Система, которую вы описали, может быть решена с помощью JMS.
Используйте очередь JMS pub-sub, чтобы назначить работу. "Босс" является издателем. Каждый сотрудник является "подписчиком".
"Босс" должен будет хранить каждое опубликованное сообщение в области "проверки" (возможно, список) и установить таймер на 10 минут. Когда он получает ответ на сообщение, он очищает таймер и удаляет сообщение из области "возврата".