`
supben
  • 浏览: 330175 次
  • 性别: 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  
谢谢指教。

相关推荐

    maven管理的Spring多线程任务demo

    本示例"maven管理的Spring多线程任务demo"着重展示了如何在Spring框架中利用Maven进行项目构建,并实现多线程任务处理。在SSM(Spring、SpringMVC、MyBatis)框架背景下,如果你已经有所了解,那么这个例子将帮助你...

    Spring的多线程应用

    在【压缩包子文件的文件名称列表】"SpringThreadDemo-master"中,我们可以预期这个项目包含了一个完整的Spring多线程示例。通常,这样的项目会包含以下部分: 1. `pom.xml`:Maven配置文件,包含了Spring框架和相关...

    spring 多线程队列执行

    通过定义切面和通知,我们可以实现对多线程任务的统一管理和监控。 6. **线程安全**: 在多线程环境下,需要特别注意线程安全问题。Spring提供了一些工具类如`ConcurrentHashMap`、`AtomicInteger`等,它们具有...

    Spring3.0 mvc 定时器及多线程任务demo

    在Spring 3.0 MVC框架中,定时器和多线程任务是两个关键概念,用于构建高效、自动化的Web应用程序。下面将详细讲解这两个概念及其在实际应用中的使用。 一、Spring 3.0 MVC定时器 在Spring 3.0中,我们可以使用...

    Spring 异步多线程动态任务处理的使用心得

    本文将深入探讨在Spring中如何利用多线程和动态任务来实现异步处理,并分享一些实践心得。 首先,我们要理解Spring的异步处理机制。Spring通过`@Async`注解实现了方法级别的异步执行。当一个带有`@Async`的方法被...

    java中spring里实现多线程

    当我们谈到在Spring中实现多线程,实际上是在讨论如何在Spring环境中创建、管理和协调并发执行的任务。这涉及到Java的并发API以及Spring对这些API的包装和扩展。 首先,让我们了解Java中的多线程基础。在Java中,...

    Java多线程之定时任务 以及 SpringBoot多线程实现定时任务——异步任务

    1. SpringBoot 自定义线程池以及多线程间的异步调用(@Async、@EnableAsync) 2.Java多线程之定时任务 以及 SpringBoot多线程实现定时任务 3.@EnableScheduling 与 @Scheduled

    Java Spring多线程demo代码

    以下将详细介绍Java Spring中实现多线程的关键知识点,并结合"Java Spring多线程demo代码"的实践场景进行解析。 首先,Spring提供了`ThreadPoolTaskExecutor`,这是一个基于Java的`ThreadPoolExecutor`实现的任务...

    详解Spring-Boot中如何使用多线程处理任务

    Spring Boot 中的多线程处理任务 在 Spring Boot 项目中,使用多线程处理任务是非常重要的,特别是在监控项目中,每个被监控的业务都需要单独运行在一个线程中,具有自己的配置参数。那么,如何在 Spring Boot 项目...

    Spring-Boot中如何使用多线程处理任务方法

    "Spring Boot 中多线程处理任务方法详解" 在 Spring Boot 项目中,使用多线程处理任务是一种常见的需求,尤其是在需要并发处理多个任务的情况下。那么,如何使用多线程处理任务方法呢?下面我们将详细介绍 Spring ...

    定时任务启动多线线程示例

    在Java中,我们可以使用`ExecutorService`来管理线程池并执行多线程任务。首先,需要在Spring配置类中声明一个`ThreadPoolTaskExecutor`实例: ```java import org.springframework.context.annotation.Bean; ...

    Springboot Druid多数据源 多线程

    总结起来,这个项目展示了如何利用Spring Boot和Druid实现多数据源切换,以及如何在Spring Boot中配置和使用多线程来提升数据库操作的并发性能。对于初学者,这是一个很好的学习资源,可以深入理解Spring Boot的自动...

    多线程分别下载文件

    在Android开发中,多线程技术常常用于提升应用程序的性能,特别是在处理耗时操作,如文件下载时。这个"多线程分别下载文件"的Demo是针对在ListView或GridView控件中实现的一项功能,允许用户选择多个文件进行并行...

    spring4+junit4.8 +多线程TheadTool

    而多线程在现代编程中扮演着关键角色,特别是在处理并发任务、提高系统效率时。 在"spring4+junit4.8 +多线程TheadTool"的场景下,我们可以深入探讨以下几个知识点: 1. **Spring4框架**:Spring4在Spring3的基础...

    详解spring多线程与定时任务

    【Spring多线程任务】 Spring框架提供了一种优雅的方式来处理多线程任务,这主要得益于其内置的任务执行器(TaskExecutor)接口。TaskExecutor接口允许开发者定义如何执行异步任务,而Spring通过实现该接口提供了...

    HttpClient+ Spring实现多线程

    标题 "HttpClient + Spring 实现多线程" 涉及到的是如何在Spring框架中使用Apache HttpClient库来创建一个支持多线程的HTTP客户端服务。Apache HttpClient是一个强大的HTTP客户端API,它提供了丰富的功能来处理HTTP...

    Spring 框架自带定时任务和Quartz定时任务

    在这两种方式中,Spring框架提供了自己的定时任务工具Spring Task,以及与专业定时任务框架Quartz集成的能力。 首先,对于Java自带的定时任务实现,我们可以使用java.util.Timer和java.util.TimerTask类。Timer类...

    spring 任务调度

    - **任务隔离**:为了防止任务间的相互影响,应该为每个任务分配独立的线程。 - **异常处理**:确保任务有适当的异常处理,避免因单个任务失败而影响整个调度系统。 - **监控和调试**:建立任务执行的监控系统,...

    spring-boot-multithreading.zip_spring boot_多线程

    在Spring Boot应用中,多线程的使用是一个关键特性,特别是在处理高并发或者需要执行耗时操作时。本文将深入探讨Spring Boot如何实现多线程,并结合提供的`spring-boot-multithreading.zip`压缩包中的示例进行讲解。...

    java 后端学习资料包含(spring,多线程).zip

    在Spring框架中,多线程的应用主要体现在并发处理和异步任务上。Spring的`ThreadPoolTaskExecutor`和`AsyncConfigurer`接口可以帮助我们配置和管理线程池,实现任务的异步执行。通过在方法上添加`@Async`注解,我们...

Global site tag (gtag.js) - Google Analytics