为了账号安全,请及时绑定邮箱和手机立即绑定

从任务角度上思考:在单核CPU上运行多线程程序有意义吗?

问题假设: _ _ _ _ _ 为单位时间内CPU的工作状态。T为Thread, _ _ _ T _  表示单位时间内java程序只使用了 1/5的运算能力

具体任务:查询公司所有员工1~3年的考勤记录

单CPU单线程执行任务:

    一次性查询1~3年的的员工考勤记录

    CPU利用率: T  _ _ _ _ _T _ _ _ _ _ T _ _ _ _ _ 完成 , 使用了三个周期, 其他空闲的时间交给了操作系统的其他任务


单CPU多线程执行任务:导出1~3年的考勤记录

    使用三个线程分别查询第1年、第2年、第3年的员工考勤记录 T = T1 + T2 +T3

    单CPU多线程的CPU利用率: T1 _ T2 _ T3, 只使用了一个周期的时间完成任务。


我可不可以认为: 单CPU多线程,是尽力在压榨CPU的使用率。 

另外,当CPU已经被挤满。单CPU多线程的性价比应该辩证来看,如果有IO操作,依旧是高性价比的操作,

如果是查询公司所有员工1~3年的考勤记录,多线程的操作既增加了上下文切换也并没有成功压榨到CPU时间,所以性价比低。

以上是我的思考,想问悟空老师,我的想法是否有误区?


正在回答

1 回答

 单CPU多线程,是尽力在压榨CPU的使用率,是对的,如果有IO操作,很多线程会休息,如果单线程,那么CPU就休息。如果CPU已经被挤满,那么并不是说

在单核CPU上运行多线程程序没有意义,而是说,线程的数量设置不合理,应该减少线程的数量。


0 回复 有任何疑惑可以回复我~
#1

ych_1997 提问者

明白,谢谢老师!
2019-11-09 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

从任务角度上思考:在单核CPU上运行多线程程序有意义吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信