论坛首页 入门技术论坛

spring 多线程计划任务

浏览 5773 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-11-17   最后修改:2010-11-17
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/spring-beans.dtd">
<beans>

  <!-- 异步线程池 -->
  <bean id="threadPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <!-- 核心线程数  -->
    <property name="corePoolSize" value="10" />
    <!-- 最大线程数 -->
    <property name="maxPoolSize" value="50" />
    <!-- 队列最大长度 >=mainExecutor.maxSize -->
    <property name="queueCapacity" value="1000" />
    <!-- 线程池维护线程所允许的空闲时间 -->
    <property name="keepAliveSeconds" value="300" />
    <!-- 线程池对拒绝任务(无线程可用)的处理策略 -->
    <property name="rejectedExecutionHandler">
      <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
    </property>
  </bean>

  <bean id="mainExecutor" class="supben.MainExecutor">
    <property name="threadPool" ref="threadPool" /> 
  </bean>

  <bean id="springScheduleExecutorTask" class="org.springframework.scheduling.concurrent.ScheduledExecutorTask">
    <property name="runnable" ref="mainExecutor" />
    <!-- 容器加载10秒后开始执行 -->
    <property name="delay" value="10000" />
    <!-- 每次任务间隔 5秒-->
    <property name="period" value="5000" />
  </bean>
  
    <bean id="springScheduledExecutorFactoryBean" class="org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean">
    <property name="scheduledExecutorTasks">
      <list>
        <ref bean="springScheduleExecutorTask" />
      </list>
    </property>
  </bean>

</beans>





public class MainExecutor extends TimerTask {
         
         //注入ThreadPoolTaskExecutor 到主线程中
	private ThreadPoolTaskExecutor threadPool;
	
	public void setThreadPool(ThreadPoolTaskExecutor threadPool){
		this.threadPool = threadPool;
	}


         //在主线程中执行任务线程.....  
	@Override
	public void run() {
		threadPool.execute(new Task1());

	}



//任务线程1... 同理可以有2,有3..
public class Task1 implements Runnable {
		public void run() {
		Time time  = new Time(System.currentTimeMillis());
		System.out.println("这是第一个工作,执行于:"+time);
	}

}
   发表时间:2010-11-17  
谢谢指教。
0 请登录后投票
   发表时间:2010-11-18   最后修改:2010-11-18
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。
0 请登录后投票
   发表时间:2010-11-19  
正在打算使用呢,谢谢啊。解决大问题了
0 请登录后投票
   发表时间:2010-11-19  
3eee 写道
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。


对,quartz才支持这个,前面文章里有
0 请登录后投票
   发表时间:2010-11-19  
3eee 写道
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。


我不是太清楚,但是我身后的高手说不支持集群环境。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics