博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring定时任务.线程池,自定义多线程配置
阅读量:7062 次
发布时间:2019-06-28

本文共 3376 字,大约阅读时间需要 11 分钟。

定时任务及多线程配置xml

定时任务JAVA类

RuleService.java

@Servicepublic class RuleService {    public void updateRule(){          System.out.println("定时任务启动");        }}

多线程配置

StartTaskThread.java

public class StartTaskThread implements Runnable {     private List
list; public StartTaskThread(List
list) { this.list= list; } @Override public synchronized void run() { System.out.println(list.size()); }}

修改定时任务类,分配数据,并发布到各个线程里。

RuleService.java

@Servicepublic class RuleService {    public void updateRule(){
int nums = 5;//开启5线程        List
strList= new ArrayList
(); for (int i = 0; i < 2000; i++) { strList.add("test"+i); } Map
> map = new HashMap
>(); for (int i = 0; i < nums; i++) { List
list = new ArrayList
(); map.put(i, list); } int st = 0; //起点 int avg = strList.size()/nums; //平均值 int count =0;//记录值 for (int i = 0; i < nums; i++) { if(i==nums-1){ for (int j = count; j
new Thread(new StartTaskThread(map.get(i)).start();
} }

取线程配置工具类,如果线程内需要操作DAO 则需要主动获取spring注入的DAO类的Bean

ContextUtil.java

import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;public class ContextUtil implements ApplicationContextAware{    private static ApplicationContext context;    @Override    public void setApplicationContext(ApplicationContext applicationContext)            throws BeansException {        context = applicationContext;    }    public static ApplicationContext getContext(){        return context;    }    public static Object getBean(String beanName) {        return context.getBean(beanName);    }}

获取dao写法

RuleDAO ruleDAO =(RuleDAO) ContextUtil.getBean("ruleDAO");

 

 

使用线程池

StartTaskThread2.java

public class StartTaskThread implements Runnable {     private String st;        public StartTaskThread(String st) {       this.st= st;    }    @Override    public void run() {           System.out.println(st);    }}

线程池

RuleService2.java

@Servicepublic class RuleService {    public void updateRule(){
ThreadPoolTaskExecutor tpte =(ThreadPoolTaskExecutor)ContextUtil.getBean("threadPoolTaskExecutor");
List
strList= new ArrayList
(); for (int i = 0; i < 2000; i++) { strList.add("test"+i); }
for (int i = 0; i < strList.size(); i++) {            tpte.execute(new StartTaskThread2(strList.get(i)));        }
}

 

转载地址:http://vtnll.baihongyu.com/

你可能感兴趣的文章
小程序button引导用户授权
查看>>
机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
查看>>
我是如何设计 Upload 上传组件的
查看>>
彻底搞懂浏览器Event-loop
查看>>
java2019面试题北京
查看>>
Promise面试题2实现异步串行执行
查看>>
ECS应用管理最佳实践
查看>>
JavaSE小实践1:Java爬取斗图网站的所有表情包
查看>>
微信小程序上拉加载:onReachBottom详解+设置触发距离
查看>>
python docx文档转html页面
查看>>
ng6--错误信息小结(持续更新)
查看>>
ECMAScript6(0):ES6简明参考手册
查看>>
CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
查看>>
Python学习之路13-记分
查看>>
从tcpdump抓包看TCP/IP协议
查看>>
【跃迁之路】【463天】刻意练习系列222(2018.05.14)
查看>>
windows-nginx-https-本地配置
查看>>
JDK9: 集成 Jshell 和 Maven 项目.
查看>>
【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
查看>>
回流、重绘及其优化
查看>>