python 电梯运行_面向对象电梯系列总结

本文总结了使用Python实现电梯运行的面向对象设计,包括电梯、调度器和主线程的架构,调度算法设计,线程同步与结束策略。通过度量分析,展示了代码的复杂度和依赖度,并探讨了线程安全、设计原则和调试经验。
摘要由CSDN通过智能技术生成

一. 设计策略

1. 架构设计

三个线程:电梯,调度器,主线程(输入线程), 采用worker thread,生产者消费者模式。和同学讨论,发现有的观点认为:调度器更像是一个功能的集合,类似一个函数,不像是一个主体,而且线程越少bug一般而言越少,于是调度器不做为线程。也挺有道理。架构图如下:

095bfd8703e8ba115964943ede195f52.png

其中task使用ConcurrentHashmap实现,对其方法没有加synchronized, request使用普通List实现, 对其public方法都加了synchronized。这两个类作为被多个线程访问的类,进行了同步控制。

main向request中放入请求,调度器从request中拿出请求并分配给一个电梯(放进该电梯的task处),电梯从自己的task中拿出请求并执行,car是电梯的轿厢,代表电梯内的请求。此种实现方式不是电梯去向调度器要任务,而是调度器主动分配任务给电梯。整个架构耦合度较低。

2. 调度算法设计

将调度分解成两个独立的过程:分配电梯,分配到达楼层。

分配电梯的算法如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值