多线程浅析(2)
来源:互联网 发布:c语言vector用法 编辑:程序博客网 时间:2024/05/17 17:46
使用线程池的目的就是为了最大程度复用对象.的最重要的特征也就是最大程度利用线程。系统启动线程需要涉及与操作系统的交互所以资源消耗量大,需要线程池提供需要大量使用的短暂线程。线程在启动时创建大量空白线程,程序将一个runnable对象传给线程池,线程池启动一个线程执行run方法,方法结束线程再次返回线程池成为空闲状态同时等待下一个runnable对象的run方法。
线程池的创建方法:
1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
2、 newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
3、newScheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行。
4、 newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
线程池适用与在单位时间内处理数目巨大的连接请求,但处理时间相对较短的情况。要处理的是一个长连接,即个连接上都是一个执行时间很长的任务则不适用线程池。
public class ThreadPoolTest { public static void main(String[] args) { ExecutorService pool = Executors.newFixedThreadPool(6); Runnable target =() ->{ for (int i = 0; i<100; i++) { System.out.println(Thread.currentThread().getName()+"的i的值为:" +i) } pool.submit(target); pool.submit(target); pool.shutdown(); } } }
线程池的创建方法:
1、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
2、 newFixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
3、newScheduledThreadPool创建一个定长线程池,支持定时及周期性任务执行。
4、 newSingleThreadExecutor创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
线程池适用与在单位时间内处理数目巨大的连接请求,但处理时间相对较短的情况。要处理的是一个长连接,即个连接上都是一个执行时间很长的任务则不适用线程池。
0 0
- 多线程浅析(2)
- 多线程浅析(1)
- 多线程编程浅析(2)——线程间通信
- 多线程编程浅析(2)——线程间通信
- 多线程编程浅析(2)——线程间通信
- 浅析多线程
- Java中的多线程浅析(1)
- JAVA 的多线程浅析
- JAVA 的多线程浅析
- JAVA 的多线程浅析
- JAVA 的多线程浅析
- JAVA 的多线程浅析
- JAVA 的多线程浅析
- 浅析编写C#多线程
- 浅析编写C#多线程
- java多线程性能浅析
- java 多线程 实例浅析
- java多线程性能浅析
- c语言中,逗号运算符的问题
- OV2685翻转问题
- 《笨办法学Python》 第26课手记
- 算法导论15.1钢条切割 练习总结
- hook模板x86/x64通用版(3)--CHook.h说明
- 多线程浅析(2)
- Git配置
- LeetCode(36)-Valid Sudoku
- (私人简单记录)使用xib文件
- ServletConfig对象
- Javascript 如何修改CSS样式(网页样式) 补充说明
- 关于memcached
- VC6.0中如何修改工程的名字
- 跟我学习dubbo-消息中间件在分布式系统中的作用介绍(8)