OO 2026第二次博客作业

刘睿知-24373337 2026-04-25 23:12:05
  • 总结分析三次作业中同步块的设置和锁的选择,并分析锁与同步块中处理语句之间的关系

优先选择了 synchronized 锁,原因非常简单,就是因为简单好写。第三次作业使用了 ReentrantLock,这是因为要避免当两个电梯一起冲向 F2,所以要手动加锁,否则会出问题。

  • 总结分析三次作业中的调度器设计,并分析调度器如何与程序中的线程进行交互;总结分析三次作业中的调度策略,并分析自己的调度策略是如何适应时间、电量等多个性能指标的

架构很清晰:调度器向电梯派人,派完人就 notifyAll。特别地,我们的调度策略第一次就是按照指导书实现的先到优先,但是被发配B房了,所以后来换成了LOOK和一个神秘cost算法。比如,如果同向能捎带cost就低之类的。总之,基本上对时间看齐

  • 分析自己程序出现过的bug以及自己面对多线程程序的debug方法

一二次作业未发现bug。特别地,第二次作业因为设置了单个电梯不能同时接20个人,奇迹般地躲过了hack。

第三次作业遇到了两个bug:一个是加锁顺序错误导致的死锁,另一个是如果因为维护把人放下,即使到达了目的地仍然会输出临时下车。

debug方法比较简单,就是点击调试,然后看哪个线程死锁了。

  • 结合三次作业谈谈从线程安全和层次化设计的理解

线程安全在复杂的系统里是一个非常困难的问题。涉及原子操作,加锁等多种问题。进行层次化设计或许可以减少锁的粒度和嵌套层数,从而一定程度上避免死锁问题。

  • 具体谈谈大模型的使用心得(我们不会因为大家填写的真实内容给大家扣分,请放心填写):

我使用Gemini 3 Pro大模型进行了代码检查和评测集搭建。这一点其实大模型做的非常好。但是有一些边界情况大模型无法发现,包括但不限于65个人突然塞到一个电梯里的情况。

  • 谈谈自己二单元的真实体验和感受,向我们提出建议。

第二单元似乎有点难但不过还不错能接受

...全文
101 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

307

社区成员

发帖
与我相关
我的任务
社区描述
2026年北航面向对象设计与构造
java 高校
社区管理员
  • 孙琦航
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧