线程池 实现原理 传统的多线程服务器模型 实现 短小精悍细解
2023-09-14 09:06:15 时间
粉丝不过W
线程池
很多的网络服务器( 包括 Web 服务器) :单位时间内必须处理数目巨大的连接请求, 但 处理时间却是比较短
传统的多线程服务器模型 实现: 一旦有个请求到达, 就创建一个新的线程, 由该线程执行任务, 任务执行完毕之后, 线程就退出。 这就是" 即时创建,即时销毁 "的策略
与创建进程相比, 创建线程的时间已经大大的缩短, 但如果 提交给线程的任务是执行时间较短, 而且执行次数非常频繁, 那服务器就 处于一个不停的创建线程和销毁线程的状态。 这笔开销是不可忽略的, 尤其是线程执行的时间非常非常短的情况下
线程池就解决了上面得问题
实现原理:
在应用程序启动之后, 就马上创建一定数量的线程, 放入空闲的队列中
这些线程都处于阻塞状态, 这些线程只占一点内存, 不占用 CPU
当任务到来后, 线程池将选择一个空闲的线程, 将任务传入此线程中运行
当所有的线程都处在处理任务的时候, 线程池将自动创建一定的数量的新线程, 用于处理更多的任务
执行任务完成之后线程并不退出, 而是继续在线程池中等待下一次任务
当大部分线程处于阻塞状态时, 线程池将自动销毁一部分的线程, 回收系统资源
相关文章
- Unity多线程(Thread)和主线程(MainThread)交互使用类——Loom工具分享
- python多线程扫描爆破网站服务器思路【笔记】
- 多线程委托回调
- 多线程之传统多线程
- java多线程(一)——线程安全的单例模式
- 【多线程,详细demo】Java多线程基础学习(二)
- 【Python成长之路】来聊聊多线程的几位“辅助”
- Java并发多线程高频面试题
- 007-多线程-锁-JUC锁-CountDownLatch-闭锁【允许一个或多个线程,等待其他一组线程完成操作,再继续执行】
- C++11单/多线程总结(三十五)
- 多线程同步AutoResetEvent 和ManualResetEvent
- Java多线程面试题与答案