我必须用Java编写一个程序,从CSV文件中获取飞行数据并模拟飞行;也就是说,使用线程来改变每个航班的状态。以下是项目页面中更具体的描述:
编写一个程序,管理许多航空公司和机场的航班状态信息流。航空公司监视器,事件发生器和机场状态监视器将使用提供的CSV文件使用每日航班时刻表进行初始化。时间表包括在当天下午4-5点的最繁忙时段离开的航班。
现在,这里是我必须实现的所有线程的描述:
Airline Monitor线程:为每家航空公司启动一个线程,以接收和发布对所涉及的出发和到达城市所代表的线程的更改。例如,如果从BHM到DCA的航班244延迟,则将延迟发布到BHM和DCA航班状态监视器。
机场航班状态监控线程为每个机场启动一个线程并监控该机场的所有航班。每个机场在每个航空公司生成的航班上接收活动。每个主题都会将机场的当前航班状态发布到到达和离开文件。
飞行事件发生器线程启动单个线程以生成对航班的更改,包括延误,登机,左转,起飞,降落和登机。
我的问题很简单。我正在努力为该计划找到一个好的起点和结构。它应该只是一个主要文件,线程编织在一起吗?或者我应该为每种类型的线程实现一个面向对象的结构吗?
最后,显然这是生产者 - 消费者问题的复杂实例。我选择使用循环缓冲区来存储需要在线程之间传递的航班信息。是否有可能举例说明如何针对此类问题实施循环缓冲区(但具体不是这个问题)?谢谢!
编辑:我没有必要设计整个机场系统;这是一个多线程项目。请考虑CSV文件中的以下行:
1,sw,mdw,mco,1600,:50
这指定这是西南航空公司当天的第一班航班,从芝加哥中途岛到奥兰多,于16:00(下午4:00)起飞,飞行时间为50分钟。我不需要机场和飞行课程;这些是通过CSV中的这些数据模拟的。我只是不确定如何处理'西南'航空公司的线程,'mdw'和'mco'机场线程,以及飞行事件发生器线程,以及它们应该如何互动。
答案 0 :(得分: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