0

我必须用 Java 编写一个程序,从 CSV 文件中获取飞行数据并模拟飞行;即使用一个线程来改变每个航班的状态。以下是项目页面中更具体的描述:

编写一个程序来管理有关许多航空公司和机场的航班状态的信息流。航空公司监视器、事件生成器和机场状态监视器将使用提供的 CSV 文件根据每日航班时间表进行初始化。时间表包括在一天中最繁忙的时间下午 4 点至 5 点起飞的航班。

现在,这里是我必须实现的所有线程的描述:

Airline Monitor 线程:为每个航空公司启动一个线程,以接收和发布对由所涉及的出发和到达城市表示的线程的更改。例如,如果从 BHM 到 DCA 的 244 航班延误,则将延误发布到 BHM 和 DCA 航班状态监视器。

机场航班状态监控线程:为每个机场启动一个线程并监控该机场的所有航班。每个机场都会收到来自每个航空公司的航班事件,因为它们是生成的。每个线程都会将机场的当前航班状态发布到到达和离开文件中。

Flight Event Generator 线程:启动单个线程来生成航班变更,包括延误、登机、左登机口、起飞、降落和登机口。

我的问题本质上很简单。我正在努力为该程序找到一个好的起点和结构。它应该只是一个贯穿整个线程的主文件吗?或者我应该实现一个面向对象的结构,每种类型的线程都有类?

最后,显然这是生产者-消费者问题的一个复杂实例。我选择使用循环缓冲区来存储需要在线程之间传递的航班信息。是否可以举例说明如何针对此类问题(但不是专门针对此问题)实现循环缓冲区?谢谢!

编辑:我不必设计整个机场系统;这特别是一个多线程项目。考虑 CSV 文件中的以下行:

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

这指定这是西南航空公司当天的第一班航班,从芝加哥中途岛飞往奥兰多,于 1600 小时(下午 4:00)起飞,飞行时间为 50 分钟。我不需要机场和航班课程;这些是由 CSV 中的这些数据模拟的。我只是不确定如何处理“西南”航空公司线程、“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 回答