java多线程实现电梯_面对对象第二单元总结 - 电梯(java多线程)

本文介绍了作者通过实现电梯多线程系统,学习和理解Java多线程设计的过程。从简单的电梯调度到复杂的智能(SS)调度,探讨了线程通信、电梯运行方向设置和换乘问题的解决方案。强调了线程安全和良好的线程通信方法的重要性,同时分享了在设计和重构过程中的经验教训。
摘要由CSDN通过智能技术生成

概述

刚刚过去的oo第二单元主要是来训练我们java多线程设计。

借助电梯这个载体,逐步深入,线程的信息交互,控制也随之复杂。

尽管,我本单元成绩不是很好看,但是,确实学到了不少东西。

下面,我就借助分析三次作业,来谈下我的收获。

作业分析

第一次作业

(1)任务分析

本次作业需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出。

本次作业电梯系统具有的功能为:上下行,开关门,每运行一层的时间为固定值,开关门的时间也为固定值。

电梯系统可以采用任意的调度策略,即上行还是下行,是否在某层开关门,都可自定义,只要保证在系统限制时间内将所有的乘客送至目的地即可。

电梯系统在某一层开关门时间内可以上下乘客,开关门的边界时间都可以上下乘客。

至于调度算法-简单FAFS(傻瓜调度即可)

(2)设计策略

请求模拟器作为一个线程,负责接受在线请求并负责将请求放入请求队列中。

电梯作为一个线程,从请求队列get到所需请求并模拟电梯行为

请求队列是请求模拟器和电梯线程的共享对象,负责完成线程通信,控制。

其实,第一次作业比较简单,只需要考虑以下几个问题

问题1电梯如何完成请求

先接到请求发出者,然后完成该请求。在第一次作业中,我们无需判断电梯运动方向,所以这个问题就比较简单了,只需要sleep盲目模拟即可

问题2电梯线程什么时候死亡?

请求模拟器没有更多请求产生 & 请求队列等待人数为0 & 电梯中没有人

问题3线程通信,控制

第一次作业,轮询无碍,至于同步问题,给请求队列的get() put()函数加锁即可

(3) 度量分析

代码规格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值