Jdk1.4下线程池

来源:互联网 发布:tscttp244pro软件 编辑:程序博客网 时间:2024/06/01 08:46
 
Jdk1.4下线程池
       JSR 166 (java.util.concurrent)是jdk1.5的部分,它给我们的多线程开发带来很多方便。因为很多应用环境还是在jdk1.4下,目前还无法升级到jkd1.5,如我们的项目很多是在weblogic8.1上运行。想在jdk1.4下享受JSR 166的好处,可以使用backport-util-concurrent,下载地址为:http://backport-jsr166.sourceforge.net/index.php
       backport-util-concurrent的api和jdk1.5的 java.util.concurrent基本一致吧,可以参照jdk1.5的中文doc,去做。
       通常项目中都使用spring,可以把连接池配到spring里,当成一个服务使用。(因为使用的spring版本比较低1.2.8),
1.         在spring中配置连接池
 <!-- BlockingQueue -->
 <bean id="blockingQueue" class="edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue">
    <constructor-arg><value>2000</value></constructor-arg>
 </bean>
 <bean id="timeUnit" class="edu.emory.mathcs.backport.java.util.concurrent.TimeUnit" factory-method="valueOf">
    <constructor-arg><value>SECONDS</value></constructor-arg>
 </bean>
 <!-- work thread pool -->
 <bean id="executorService" class="edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor" destroy-method="shutdown">
    <!--池中所保存的线程数,包括空闲线程 -->
    <constructor-arg><value>10</value></constructor-arg>
    <!-- 池中允许的最大线程数 -->
    <constructor-arg><value>200</value></constructor-arg>
    <!-- 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间 -->
    <constructor-arg><value>60</value></constructor-arg>
    <!-- 参数的时间单位 -->
    <constructor-arg><ref bean="timeUnit"/></constructor-arg>
    <!-- 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务 -->
    <constructor-arg><ref bean="blockingQueue"/></constructor-arg>
 </bean>
2.         实现Callable接口
public class QfSlave
    implements Callable
{
 public Object call() throws Exception
 {//你的线程任务
 }
}
3.         提交任务到线程池,将executorService注入到需要线程池的地方
QfSlave  slave = new QfSlave();
executorService.submit(slave);//提交任务
原创粉丝点击