关于cup和多线程的问题

来源:3-9 Executor相关类

慕沐4323715

2020-01-09

老师你好,在单核cup的情况下,并发实际只是给每个线程分配时间片,那么所有线程使用的时间片总和和单线程所需要的时间不应该是一样的吗,为什么多线程在数量很多的情况下比单线程要快的多?

写回答

1回答

悟空

2020-01-09

在单核CPU上运行多线程程序有意义吗?

单核机器上的真正并行性是不可能实现的。然而,如果您的应用程序可以从中受益,那么编写多线程程序仍然是有意义的。当进程使用多个线程时,即使其中一个线程执行缓慢或阻塞任务,抢占式多任务也可以使应用程序保持运行。

 

比如说你正在开发一个从非常慢的磁盘读取一些数据的桌面应用程序。如果只用一个线程编写程序,整个应用程序将冻结,直到磁盘操作完成:分配给唯一线程的CPU功率在等待磁盘唤醒时被浪费。当然,操作系统除此之外还运行许多其他进程,但您的特定应用程序将不会取得任何进展。

 

让我们以多线程的方式重新思考您的应用。线程A负责磁盘访问,而线程B负责主接口。如果线程A由于设备运行缓慢而等待,则线程B仍然可以运行主界面,从而使程序保持响应。这是可能的,因为有两个线程,操作系统可以在它们之间切换CPU资源而不会卡在较慢的线程上。



4
0

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程