spring线程池应用详解

spring线程池应用详解

ID:20442066

大小:132.35 KB

页数:10页

时间:2018-10-12

spring线程池应用详解_第1页
spring线程池应用详解_第2页
spring线程池应用详解_第3页
spring线程池应用详解_第4页
spring线程池应用详解_第5页
资源描述:

《spring线程池应用详解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Spring线程池应用详解多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,你只需要关注于并发事物的流程以及一些并发负载量等特性,具体来说如何使用spring来处理并发事务:1.了解TaskExecutor接口Spring的TaskExecutor接口等同于java.util.concurrent.Executor接口。实际上,它存在的主要原因是为了在使用线程池的时候,将对Java5的依赖抽象出来。这个接口只有一个方法execute(Runnabletask),它根据线程池的语

2、义和配置,来接受一个执行任务。最初创建TaskExecutor是为了在需要时给其他Spring组件提供一个线程池的抽象。例如ApplicationEventMulticaster组件、JMS的AbstractMessageListenerContainer和对Quartz的整合都使用了TaskExecutor抽象来提供线程池。当然,如果你的bean需要线程池行为,你也可以使用这个抽象层。2.TaskExecutor接口的实现类(1)SimpleAsyncTaskExecutor类这个实现不重用任]可线程,或者说它每次调用都启动一个新线程。但是,它还是支持对并发总数

3、设限,当超过线程并发总数限制时,阻塞新的调用,直到有位置被释放。如果你需要真正的池,请继续往下看。(2)SyncTaskExecutor类这个实现不会异步执行。相反,每次调用都在发起调用的线程中执行。它的主要用处是在不需要多线程的时候,tl:如简单的testcase。⑶ConcurrentTaskExecutor类这个实现是对」ava5java.util.concurrent.Executor类的包装0有另一个备选,ThreadPoolTaskExecutor类,它暴露了Executor的配置参数作为bean属性。很少需要使用ConcurrentTaskExecu

4、tor,但是如果ThreadPoolTaskExecutor不敷所需,ConcurrentTaskExecutor是另外一个备选。(4)SimpleThreadPoolTaskExecutor类这个实现实际上是Quartz的SimpleThreadPool类的子类,它会监听Spring的生命周期回调。当你有线程池,需要在Quartz和非Quartz组件中共用时,这是它的典型用处。(5)ThreadPoolTaskExecutor类它不支持任何对java.util.concurrent包的替换或者下行移植。DougLea和DawidKurzyniec对java.ut

5、il.concurrent的实现都采用了不同的包结构,导致它们无法正确运行。这个实现只能在Java5环境中使用,但是却是这个环境中最常用的。它暴露的beanproperties可以用来配置一个java.util.concurrent.ThreadPoolExecutor,把它包装到一个TaskExecutor中。如果你需要更加先进的类比如ScheduledThreadPoolExecutor,我们建议你使用ConcurrentTaskExecutor来替代。(6)TimerTaskExecutor类这个实现使用一个TimerTask作为其背后的实现。它和SyncT

6、askExecutor的不同在于,方法调用是在一个独立的线程中进行的,虽然在那个线程中是同步的。(7)WorkManagerTaskExecutor类这个实现使用了CommonJWorkManager作为其底层实现,是在Springcontext中配置CommonJWorkManager应用的最重要的类。和SimpleThreadPoolTaskExecutor类似,这个类实现了WorkManager接口,因此可以直接作为WorkManager使用。一、初始化1,直接凋用[java]viewplaincopyprint?1.ThreadPoolTaskExecut

7、orpoolTaskExecutor=newThreadPoolTaskExecutor();1.//线程池所使用的缓冲队列2.poolTaskExecutor.setQueueCapacity(200);3.//线程池維护线程的最少数跫4.poolTaskExecutor.setCorePoolSize(5);5.//线程池维护线程的鉍大数量6.poolTaskExecutor.setMaxPoolSize(1000);7.//线程池维护线程所允许的空闲吋间8.poolTaskExecutor.setKGGpAliveSeconds(30000);9.poolT

8、askEx

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

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

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