1

40 の定期便の配列があります。各フライト オブジェクトには、フライト番号、航空会社、出発都市、到着都市、飛行時間、飛行時間などのデータが格納されています。

フライト時間が発生するたびに、フライト イベント ジェネレータ スレッドが各フライトのステータスを、Scheduled、Departed、Delayed、Arrived などに変更します。この部分は問題ではありません。

生産者と消費者の側面は次のとおりです。これらのイベント (出発、到着、遅延) が発生すると、前述のフライト イベント ジェネレーター スレッドは、これらの変更を航空会社のスレッド(航空会社ごとに 1 つのスレッド (フライト オブジェクト: Southwest、American などで指定) に発行) に発行する必要があります。次に、これらの航空会社のスレッドは、空港ごとに 1 つのスレッド (フライト オブジェクトによって指定されます) である、すべての空港フライト モニター スレッドに変更を公開します。これらのスレッドは、ファイルへの変更を公開します。

私の質問は、この一見複雑な生産者と消費者の問題をどのように正確に処理する必要があるかということです。また、同じ出発時刻の2つのフライトをどのように処理すればよいですか?

4

2 に答える 2

2

通常、Java で Producer/Consumer パターンを実装するにはjava.util.concurrent.BlockingQueue.

このブログ投稿をご覧ください。

于 2013-02-21T19:30:17.897 に答える
0

caveofprogramming による YouTube のビデオ チュートリアルをご覧ください。

これは、Java がすぐにサポートするブロッキング キューを使用しています:
http://www.youtube.com/watch?v=Vrt5LqpH2D0&list=PLBB24CFB073F1048E

これは、待機、通知などを使用して独自の同期ロジックを記述したい場合です:
http://www.youtube.com/watch?v=gx_YUORX5vk&list=PLBB24CFB073F1048E

実際、彼のチャンネルでマルチスレッドに関するシリーズ全体を確認する必要があります。非常に素晴らしいチュートリアル。

于 2013-02-21T19:34:10.457 に答える