美文网首页
是不是线程越多越好?

是不是线程越多越好?

作者: BillSearchGates | 来源:发表于2021-01-31 22:54 被阅读0次

即使单核CPU计算机,也能“同时”运行数百个线程。但我们都知道这只不过是操作系统用时间分片玩的一个小把戏。这就是所谓的“并发”。

实际上,一个CPU核心同一时刻,只能执行一个线程,然后操作系统切换上下文,CPU核心开始执行另一个线程的任务。因此给定一个CPU核心,按顺序执行任务A和B比”同时“(并发)执行A和B要快。计算机的“并行“能力取决于CPU的核心数目。一旦线程的数量超过了CPU核心数,再增加线程数目,只会让系统变得更慢,而不是更快。

那么什么时候增加线程的数量可以让系统变得更快呢?当线程的任务有大量的“I/O等待”时,线程总是阻塞着等待磁盘、网络等,此时CPU处于IDLE状态,可以用于服务其他线程。这个时候,增加线程数,“并发”处理任务,可以提高系统处理速度。

总结来说,CPU密集型任务,并行执行的线程数应该尽量和CPU核心数保持一致,否则超过了CPU核心数,再提高线程数也不会提高处理速度,反而因为上下文切换带来的损耗降低处理速度。对于I/O密集型任务,根据I/O的响应速度,适当地调节线程数目,可以提高系统速度。

相关文章

  • 线程池创建多少线程比较合理

    线程池创建多少线程比较合理? 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个...

  • 线程池创建多少线程比较合理

    你知道线程池创建多少线程比较合理吗? 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?...

  • 线程池应用及实现原理剖析

    为什么要用线程池? 线程是不是越多越好? 1、线程在java中是一个对象,更是操作系统的资源,线程的创建、销毁需要...

  • Java多线程 - 线程池原理

    一、为什么要用线程池 线程是不是越多越好?1、线程在java中是一个对象,更是操作系统的资源,线程创建、销毁需要时...

  • 6.线程池应用

    线程是不是越多越好? 线程在java中是一个对象,更是操作系统的资源,线程创建,销毁需要时间。如果创建时间+销毁时...

  • 是不是线程越多越好?

    即使单核CPU计算机,也能“同时”运行数百个线程。但我们都知道这只不过是操作系统用时间分片玩的一个小把戏。这就是所...

  • 如何创建合理线程?

    在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们...

  • java 线程池

    第一个问题:线程是不是越多越好? 线程本身就是一个java对象,需要销毁系统资源,线程创建和销毁都需要时间。如果执...

  • 彻底搞清楚Java并发 (一) 基础

    多线程编程是为了让程序运行得更快,但是不是说,线程创建地越多越好,线程切换的时候上下文切换,以及受限于硬件和软件资...

  • 线程

    线程四种单线程 固定数目线程 缓存线程 定时线程 关于线程: 1.线程并不是越多越好.2.线程该用才用.跟事物一样...

网友评论

      本文标题:是不是线程越多越好?

      本文链接:https://www.haomeiwen.com/subject/qlydtltx.html