`
supben
  • 浏览: 326788 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 多线程计划任务

    博客分类:
  • SSH
阅读更多
<?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);
	}

}
分享到:
评论
8 楼 longhu1222 2014-08-25  
缘在瞬间 写道
这在研究学习,有个大问题,如果线程中使用的bean是通过spring注解的,那么这些bean是单例还是多例模式呢????

比如一个线程中用到了某个bean中的一个算法,那么这个bean应该是单例的还是多例的???

spring bean 默认是单例模式。
7 楼 isaiahzhong 2013-08-27  
       我不明白,这个为什么不存在多线程共线数据的问题呢?为什么不需要使用锁机制呢?
        threadPool.execute(new Task1());   这句话是否存在多线程不同线程操作同一个任务呢?
6 楼 缘在瞬间 2013-08-20  
这在研究学习,有个大问题,如果线程中使用的bean是通过spring注解的,那么这些bean是单例还是多例模式呢????

比如一个线程中用到了某个bean中的一个算法,那么这个bean应该是单例的还是多例的???
5 楼 supben 2010-11-19  
3eee 写道
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。


我不是太清楚,但是我身后的高手说不支持集群环境。
4 楼 supben 2010-11-19  
3eee 写道
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。


对,quartz才支持这个,前面文章里有
3 楼 benpao 2010-11-19  
正在打算使用呢,谢谢啊。解决大问题了
2 楼 3eee 2010-11-18  
谢谢分享,你这个多线程能运用集群环境吗?还有支持好像不支持cron表达式吧。
1 楼 严东军 2010-11-17  
谢谢指教。

相关推荐

Global site tag (gtag.js) - Google Analytics