дизайн в реальном времени Java - PullRequest
1 голос
/ 15 декабря 2010

Я думаю о том, как построить систему реального времени с использованием Java без системного API Sun Real-time.

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

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

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

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

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2010

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

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

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

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

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

0 голосов
/ 15 декабря 2010

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

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

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

...