javaexecutor并发框架

javaexecutor并发框架

ID:34417050

大小:39.96 KB

页数:12页

时间:2019-03-05

javaexecutor并发框架_第1页
javaexecutor并发框架_第2页
javaexecutor并发框架_第3页
javaexecutor并发框架_第4页
javaexecutor并发框架_第5页
资源描述:

《javaexecutor并发框架》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、仁人教育JavaExecutor并发框架(一)一、概述Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池。在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在JDK1.5后,有了很大的改善。JDK1.5之后加入了java.util.concurrent包,java.util.concurrent包的加入给予开发人员开发并发程序以及解决并发问题很大的帮助。这篇文章主要介绍下并发包下的Executor接口,Executor接口虽然作为一个非常旧的接口(JDK1

2、.52004年发布),但是很多程序员对于其中的一些原理还是不熟悉,因此写这篇文章来介绍下Executor接口,同时巩固下自己的知识。如果文章中有出现错误,欢迎大家指出。二、Executors工厂类对于数据库连接,我们经常听到数据库连接池这个概念。因为建立数据库连接时非常耗时的一个操作,其中涉及到网络IO的一些操作。因此就想出把连接通过一个连接池来管理。需要连接的话,就从连接池里取一个。当使用完了,就“关闭”连接,这不是正在意义上的关闭,只是把连接放回到我们的池里,供其他人在使用。所以对于线程,也有了线程池这个概念,其中的原理和数据库连接池是

3、差不多的,因此javajdk中也提供了线程池的功能。线程池的作用:线程池就是限制系统中使用线程的数量以及更好的使用线程   根据系统的运行情况,可以自动或手动设置线程数量,达到运行的最佳效果:配置少了,将影响系统的执行效率,配置多了,又会浪费系统的资源。用线程池配置数量,其他线程排队等候。当一个任务执行完毕后,就从队列中取一个新任务运行,如果没有新任务,那么这个线程将等待。如果来了一个新任务,但是没有空闲线程的话,那么把任务加入到等待队列中。为什么要用线程池:1.减少线程创建和销毁的次数,使线程可以多次复用2.可以根据系统情况,调整线程的数

4、量。防止创建过多的线程,消耗过多的内存(每个线程1M左右)Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了ExecutorService接口。比较重要的几个类:仁人教育仁人教育ExecutorService真正的线程池接口。ScheduledExecutorService能和Timer/TimerTask类似,解决那些需要任务重复执行的问题

5、。ThreadPoolExecutorExecutorService的默认实现。ScheduledThreadPoolExecutor继承ThreadPoolExecutor的ScheduledExecutorService接口实现,周期性任务调度的类实现。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,因此在Executors类里面提供了一些静态工厂,生成一些常用的线程池。1.newSingleThreadExecutorpublicstaticExecutorServicenewS

6、ingleThreadExecutor()publicstaticExecutorServicenewSingleThreadExecutor(ThreadFactorythreadFactory) 创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。2. newFixedThreadPoolpublicstaticExecutorServicenewFixedThreadPool(int

7、nThreads)publicstaticExecutorServicenewFixedThreadPool(intnThreads,ThreadFactorythreadFactory) 创建固定大小的线程池。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,在提交新任务,任务将会进入等待队列中等待。如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。3.newCachedThreadPoolpublicstaticExecutorServicenewCachedThreadPo

8、ol()仁人教育仁人教育publicstaticExecutorServicenewCachedThreadPool(ThreadFactorythreadFactory) 创建

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。