多线程_03_线程池
来源:互联网 发布:君子去仁 恶乎成名 编辑:程序博客网 时间:2024/06/02 02:15
线程池:
是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中并等待下一次分配任务。
作用:
减少了创建和销毁线程的次数;
每个工作线程都可以被重复利用;
可执行多个任务;
可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下
线程缓冲池:
是对线程进行缓冲的一种技术,线程池在还没有任务到来之前,创建一定数量(N1)的线程,放入空闲队列中,当然N1完全可用为0,在任务到来时再创建线程也不晚。这些线程都是处于阻塞(Suspended)状态,不消耗CPU,但占用较小的内存空间。当任务到来后,缓冲池选择一个空闲线程,把任务传入此线程中运行;当任务完成后线程交还到缓冲池中。如果池内线程都在处理任务后,有新任务到来时缓冲池自动创建新线程,用于处理更多的任务。当系统比较空闲时,大部分线程都一直处于暂停状态,线程池根据设置自动销毁一部分线程,回收系统资源。
Java通过Executors提供四种线程池
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFO, 优先级)执行。
服务器适合的线程池数:cup数+1
如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
- 多线程_03_线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程、多线程与线程池
- 线程、多线程、线程池总结
- 【线程】线程/多线程问题/线程池
- 多线程-线程池
- 【多线程】线程池
- c# 线程池 多线程
- 多线程、线程池
- 多线程1-线程池
- Java多线程-线程池
- java 多线程- 线程池
- ThreadPoolExecutor 线程池 多线程
- 多线程-线程池
- 多线程-7-线程池
- java 多线程线程池
- Scrum实战读书笔记
- 第k短路
- Codeforces Round #297 (Div. 2) C. Ilya and Sticks
- C++,全局变量,局部变量,静态全局变量,静态局部变量
- Lint学习使用
- 多线程_03_线程池
- JVM--java内存模型
- Java编程思想学习笔记(一) 第2章 一切都是对象
- 高通平台MSM8916LCM模块移植(一)-bootloader部分
- LeetCode: 1. Two Sum python
- MySQL数据库优化总结如果索引多个字段,第一个字段要是经常作为查询条件的。如果只有第二个字段作为查询条件,这个索引不会起到作用;
- todo 数据结构算法
- Opencv学习三-图像的载入,显示和输出
- HDU1096