线程池
来源:互联网 发布:麦咖啡软件 编辑:程序博客网 时间:2024/06/05 18:29
线程池的引入
之前我们使用多线程都是用的Thread类中的start()来创建启动一个线程,但是在实际应用中,每次请求都创建一个新线程,开销是相当大的。服务器在创建和销毁线程上所花费的时间和消耗在系统资源都相当大,甚至可能要比在处理实际应用请求的时间和资源要多的多,除了创建和销毁线程的开销,活动的线程也需要消耗系统资源。如果在一个虚拟机中创建太多的线程,可能会使系统由于过度消耗内存或切换过度而导致系统资源不足,因此引入线程池。
线程池的原理
对多线程的管理,为了实现异步机制的一种方法,不用手动去维护,一次可以处理多个任务。
线程池的好处
- 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗;
- 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行;
- 提高线程的可管理性。线程是稀有资源,如果无限制的创建,不信会消耗系统资源,还会降低系统的稳定性,使用线程池可以统一分配,调优和监控。
线程池的使用
- 创建线程池:ExecutorService pool = Executors.newFixedThreadPool(10);(四种)
- 创建任务:无返回值的任务是一个实现了runnable接口的类,使用run();有返回值的任务是一个实现了callable接口的类,使用call();
- 执行任务:通过ExecutorService接口对象来执行任务,execute方式提交无返回值,不能判断是否执行成功;submit方式返回一个Future对象,通过future的get()来获取返回值,get()会阻塞住直到任务完成。
- 关闭线程池:shutdown()并不直接关闭线程池,而是不在接受新的任务,如果线程池内有任务,那么把这些任务执行完毕后,关闭线程池;shutdownnow()表示不再接受新的任务,并把任务队列中的任务直接移除掉,如果有正在执行的,尝试进行停止;
0 0
- 线程与线程池
- 线程池 线程优先级
- Executor线程,线程池
- 线程、多线程、线程池
- IOS-线程、线程池
- Java线程:线程池
- 线程和线程池
- 线程、多线程、线程池
- 线程、多线程、线程池
- 线程(六)线程池
- ExecutorService(线程池)+线程
- 线程和线程池
- 线程&线程池 简略
- 线程和线程池
- 线程池 线程锁
- 线程、线程池总结
- 线程与线程池
- 线程、锁、线程池
- eclipse使用maven搭建web项目
- Qt动画框架
- VideoView 黑屏
- ListView复用和优化详解
- app从点击到启动
- 线程池
- 缓存网络图片
- Visual Studio中的文件类型(sln vcproj suo user ncb)
- (一)Opencv3.2在Ubuntu14.04下的环境搭建
- 347. Top K Frequent Elements
- 使用lrucache实现图片内存缓存
- 手机无线调试方法
- Linux-网桥原理分析 .
- C++文件流I/O操作:fstream类 完整操作知识点