1

Sun Real-time System API を使用せずにJava を使用してリアルタイム システムを構築する方法を考えています。

たとえば、上司が午前 11 時にイベントを生成し、午前 11 時 10 分にフィードバックを取得する必要があるとします。フィードバックがない場合、彼はイベントを再送信します。

スタッフは午前 11 時 1 分に上司のイベントを取得し、上司に結果を返すために 1 分待たなければなりません。つまり、実際には、彼は自分の仕事をするのに 8 分かかります。午前 11 時 9 分に、完了したかどうかに関係なく、フィードバックを送信する必要があります。

これはリアルタイムシステムですね。

この場合、Java を使用してシステムを設計する方法は? これは生産者と消費者のパターンです。コンシューマー側では、この要件を満たすためにどのオブジェクト (blockingqueue、delayqueue ...) を使用しますか?

どんなウェブリンクでも、オープンソースでも大歓迎です。

感謝。

4

2 に答える 2

3

Java では、実際のコンピュータ エンジニアリングの意味でリアルタイム プログラミングを行うことはできません。あなたはスレッド スケジューラとオペレーティング システムに翻弄されており、基本的なプロパティはまったく不明です。OS が、JVM にいくらかの CPU 時間を与えるために戻ってくるまで 11:20 まで待ちたいと感じた場合、それはその仕事です。

「物事は非常に高速に応答し、メインの UI スレッドをブロックしないように注意しています」のように Microsoft の方法で「リアルタイム」を意味する場合、明確に定義された技術的な意味はありません。それは単に「ユーザー向けのコードを構築して、コンピューターで待つ必要がないように見せる」ことを意味します。

-- コメントに応じて編集します。

11:08 までに「11:07:59 と 11:08:01 の間」を意味する場合、通常の Java は、注意深いプログラミングを行うことで、最新のプラットフォームで一般的にそれを行うことができます。提供できないのは、11:08:01 に発生したイベントがプラットフォームの欠陥と見なされる状況であり、それを保証するものではありません。

「リアルタイム」と言うとき、RTS API の目的は、「ボンディング ヘッドは、正確にこのミリ秒でこれらの座標にある必要があります。0.5 ミリ秒以上遅れている場合、パーツに欠陥があり、 2 ミリ秒以上早ければ、300,000 ドルのサーボ テーブルがベアリングに衝突し、1,000 万ドルの組み立てラインの停止を引き起こします。」

于 2010-12-15T19:03:36.750 に答える
0

あなたが説明したシステムは、JMS で解決できます。

pub-sub JMS キューを使用して作業を割り当てます。「ボス」は出版社です。スタッフの各メンバーは「サブスクライバー」です。

「ボス」は、発行する各メッセージを「チェックバック」領域 (おそらくリスト) に保存し、10 分間のタイマーを設定する必要があります。メッセージへの応答を受け取ると、タイマーをクリアし、「チェック バック」領域からメッセージを削除します。

于 2010-12-15T18:10:15.797 に答える