0

CSV ファイルからフライト データを取得してフライトをシミュレートするプログラムを Java で作成する必要があります。つまり、スレッドを使用して各フライトの状態を変更します。プロジェクトページからのより具体的な説明は次のとおりです。

多くの航空会社や空港のフライト状況に関する情報の流れを管理するプログラムを作成します。航空会社モニター、イベント ジェネレーター、および空港ステータス モニターは、提供された CSV ファイルを使用して毎日のフライト スケジュールで初期化されます。このスケジュールは、1 日の最も混雑する時間帯である午後 4 時から 5 時に出発する便を対象としています。

ここで、実装する必要があるすべてのスレッドについて説明します。

Airline Monitor スレッド:各航空会社のスレッドを開始して、関連する出発地と到着地によって表されるスレッドへの変更を受信および公開します。たとえば、BHM から DCA へのフライト 244 が遅延している場合、遅延を BHM および DCA のフライト ステータス モニターに公開します。

Airport Flight Status Monitor スレッド:各空港のスレッドを開始し、その空港のすべてのフライトを監視します。各空港は、生成された各航空会社からのフライトに関するイベントを受け取ります。各スレッドは、空港の現在のフライト状況を到着および出発ファイルに発行します。

フライト イベント ジェネレーター スレッド:単一のスレッドを開始して、遅延、搭乗、左ゲート、離陸、着陸、およびゲートでのフライトへの変更を生成します。

私の質問は本質的に単純です。プログラムの適切な出発点と構造を見つけるのに苦労しています。スレッドが全体に織り込まれている 1 つのメイン ファイルだけにする必要がありますか? それとも、スレッドの種類ごとにクラスを持つオブジェクト指向構造を実装する必要がありますか?

最後に、明らかにこれは生産者と消費者の問題の複雑な例です。循環バッファーを使用して、スレッド間で受け渡す必要があるフライト情報を格納することにしました。このタイプの問題に対して循環バッファがどのように実装されているかの例を示すことは可能でしょうか (ただし、この問題は特にありません)。ありがとう!

編集:空港システム全体を設計する必要はありません。これは特にマルチスレッド プロジェクトです。CSV ファイルの次の行を検討してください。

1,sw,mdw,mco,1600,:50

これは、サウスウエスト航空のシカゴ ミッドウェイ発オーランド行きの 1 日の始発便であり、16 時 00 分 (午後 4 時) に離陸し、飛行時間は 50 分であることを示しています。クラス Airport と Flight は必要ありません。これらは、CSV からのこれらのデータによってシミュレートされます。'southwest' エアライン スレッド、'mdw' および 'mco' 空港スレッド、およびフライト イベント ジェネレーター スレッドをどう処理するか、それらがどのように相互作用するかがわかりません。

4

1 に答える 1

0

ドキュメントを見てください。同時実行に関連するすべての API コンポーネントが見つかります: http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html

ファイルを読むには、チャネルを使用することをお勧めします: http://docs.oracle.com/javase/7/docs/api/index.html?java/util/concurrent/package-summary.html

于 2013-02-21T16:06:18.120 に答える