打电话
一个合唱队共有15人,暑假期间有一个紧急演出,老师需要尽快通知到每一个同学,如果用打电话的方式,每分钟通知1人,请帮老师设计一个打电话的方案。
1. 老师依次给每个学生打电话
老师依次给所有学生拨打电话。耗时15分钟
2. 老师让同学帮忙
老师依次给同学们拨打电话太耗时了。改变策略。
老师拨打3个学生电话
10:00
老师拨打第一通10:01
学生1拨打第一通10:02
学生1拨打第二通10:03
学生1拨打第二通10:04
学生1拨打第二通
10:01
老师拨打第二通10:02
学生2拨打第一通10:03
学生2拨打第二通10:04
学生2拨打第三通10:05
学生2拨打第四通
10:02
老师拨打第三通10:03
学生3拨打第一通10:04
学生3拨打第二通10:05
学生3拨打第三通10:06
学生3拨打第四通
老师多拨打一个电话会节约时间吗?
老师拨打4个学生电话
10:00
老师拨打第一通10:01
学生1拨打第一通10:02
学生1拨打第二通10:03
学生1拨打第二通
10:01
老师拨打第二通10:02
学生2拨打第一通10:03
学生2拨打第二通10:04
学生2拨打第三通
10:02
老师拨打第三通10:03
学生3拨打第一通10:04
学生3拨打第二通10:05
学生3拨打第三通
10:03
老师拨打第四通10:04
学生4拨打第一通10:05
学生4拨打第二通10:06
学生4拨打第三通
类似老师拨打5个学生电话然后每个学生在转发2个同学耗时也是一样的。还有办法继续加速吗?
3. 老师和同学们讨论出了新的模式
老师和同学只要有空闲就通知其他同学
总结
其实第二种和第三种确实能减少通知时间,但是却隐藏了一个问题就是到底哪些同学是没有接到通知的。
这个问题如果是软件项目中,那么在接完电话的同学(处理完任务)在通知其他同学之前要先确认哪些同学没有收到通知(去中间件查询一下没有接收到通知的同学)
原文地址: https://github.com/malin1994515/my-learn/blob/master/0.Java-Learn/00/打电话.md