从任务角度上思考:在单核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时间,所以性价比低。
以上是我的思考,想问悟空老师,我的想法是否有误区?