多线程的中线置设置是编程比较重要的一环,无论是程池工作编程还是面试,是中线置一个老生常谈的话题,多线程一定比单线程跑的程池快吗?答案肯定是no,什么时候使用多线程合适,中线置什么场景下使用?程池线程池的配置又改怎么配置,本文进行一篇总结,中线置欢迎朋友们交流。程池 1.1计算机基础知识: 计算机主要组件卫CPU、中线置内存、程池磁盘,中线置三大组件中,程池CPU的中线置运行速率高于内存的1000倍以上,内存的程池运行速率高于磁盘1000倍以上。对比运行速率结果为:CPU>内存>磁盘。中线置 1.2上下文切换: 涉及到上下文切换,单核cpu切换是没意义的,多核cpu的切换才能真正的源码库满足充分利用资源达到高性能的目的。 1.3线程争用: 当多个线程执行任务不相同,但是访问资源又相同的时候,有看呢过会引起数据问题。 1.4并发执行: 可以理解为线程执行任务相同,访问资源相同的时候触发的场景。 1.5 自旋锁: 很形象的一个比喻是:冲奶的时候孩子还在哭,等着妈妈送来奶瓶和换尿布,直到妈妈处理好所有的事情才算结束,要不然就是个一直等待的状态。 1.6 互斥锁: 它跟自旋锁类似,不同的是竞选失败线程会回去睡觉,直到锁可用来竞争。一直进行循环等。 1.7 乐观锁: 很常见的乐观锁的例子是在数据库的数据操作中,直到提交更新的云服务器提供商时候才给相关的数据行加锁。 1.8 悲观锁: 悲观锁就是如果一个事务操作用了锁,那只有当这个事务把锁释放(把妈妈给释放),其他事务才能够执行与该锁冲突的操作。 1.9 时间片分配算法: CPU通过给每个线程分配CPU时间来实现任务运行,这个时间片一般是几十毫秒。这样不停地来回切换任务,运行程序,划分时间片,就叫做:时间片分配算法。 因为线程池的设置肯定是跟着服务器硬件和业务处理走的,所以不通场景下配置是不一样的。场景假设: 计算公式: 多线程的使用场景是多个任务执行,但是CPU处理时间不长,占用的时间片不高,那么多线程会很大的提升性能,相反,多线程还没有单线程快。SpringBoot中比较重要的线程池的概念三个:核心线程数、队列数、最大线程数。当任务来临的时候如果corePoolSize 没有达到那么会创建新的线程执行任务直到corePoolSize 达到设定值的时候开始进入到队列中,队列满了以后开始创建新的线程直到最大线程maxPoolSize 的设置值,全部满的时候开始执行设置的拒绝策略。前言
1.一些概念介绍:
2.线程池配置介绍:
3.总结: