2010-12-15 7 views
1

Я думаю, как создать систему реального времени, используя java без API системы реального времени Sun.java real time design rtsj

Скажите, что босс создает событие в 11:00, он должен получить обратную связь в 11:10. Если никакой обратной связи, он повторно отправит свое событие.

Персонал получает событие своего босса в 11:01, он должен оставить 1 минуту для отправки своего результата обратно своему боссу. Так что на самом деле у него есть 8 минут, чтобы выполнить свою работу. В 11:09 он должен отправить отзыв независимо от того, закончил он это или нет.

Это система в режиме реального времени, не так ли?

В этом случае, как создать нашу систему с помощью java? Это образец производителя-потребителя. В потребительской стороне использовать какой объект (blockingqueue, delayqueue ...) для удовлетворения этого требования?

Любой веб-сайт, с открытым исходным кодом будет рад приветствовать вас.

Thank.

+1

Действительно ли это описание проблемы или просто метафора? – thejh 2010-12-15 17:12:29

+1

Вам также нужно расширить, как в реальном времени это должно быть. Существует разница между жестким режимом реального времени и мягким режимом реального времени. Например, автомобильная тормозная система жесткая в режиме реального времени (катастрофическая, если время отклика слишком медленное), тогда как передача сотового телефона может быть мягкой в ​​режиме реального времени (ухудшенное качество, но не катастрофическое). Кроме того, реальное время просто означает работу в гарантированном наборе временных ограничений.Действительно ли ваша система должна быть в режиме реального времени или просто по графику (например, она может быть отключена на несколько миллисекунд)? – 2010-12-15 17:28:23

+2

Помогает ли босс, является ли обратная связь ровно в 11:00:00, а не через микросекунду после * или до *? Если да, то это в режиме реального времени, и вы не можете позволить себе недетерминированное поведение JVM. Если ответ в любое время между начальным адресом электронной почты и 11:00:59 допустим, то это не в режиме реального времени. – Anon 2010-12-15 17:30:22

ответ

0

Система, которую вы описали, может быть решена с помощью JMS.

Используйте очередь J-sub-sub для назначения работы. «Босс» - издатель. Каждый член персонала является «подписчиком».

«Босс» должен будет хранить каждое сообщение, которое он публикует, в области «проверить» (возможно, список) и установить таймер на 10 минут. Когда он получит ответ на сообщение, он очистит таймер и удалит сообщение из области «проверить».

3

Вы не можете программировать в реальном времени в реальном смысле инженерной мысли в Java. Вы находитесь во власти планировщика потоков и операционной системы с полностью неизвестными основными свойствами. Если ОС почувствовала себя дожидающейся до 11:20, пока не вернулась, чтобы дать JVM некоторое время процессора, это его бизнес.

Если вы имеете в виду «realtime» в способе Microsofty, как в «Вещи отвечают действительно очень быстро, и мы стараемся никогда не блокировать основной поток пользовательского интерфейса», который не имеет четко определенного технического смысла. Это просто означает, что пользователь архитектуры, обращенный к архитектуре, дает внешний вид, который им не нужно ждать на компьютере ».

--edit в ответ на комментарий.

Если к 11:08 вы имеете в виду «между 11:07:59 и 11:08:01», то регулярная java обычно может сделать это для вас на современной платформе с тщательным программированием. То, что он не может доставить, - это ситуация, когда событие, происходящее в 11:08:01, считается дефектом платформы, оно просто не делает этой гарантии.

Когда мы говорим «в режиме реального времени» и для чего нужен RTS API, ситуация более похожа на «Скрепляющая головка должна быть в этих координатах ровно в эту миллисекунду, если она больше половины миллисекунды, быть дефектным, и если это будет более чем на 2 миллисекунды раньше, серво-таблица за 300 000 долларов будет рушиться в своих подшипниках и привести к сбою на сборочной линии на сумму 10 000 000 долларов ».