springboot项目线程使用2
线程处理的一个实际例子:
@Service
public class SynAsynThreadTestServiceImpl implements SynAsynThreadTestService {
private static final Logger logger = Logger.getLogger(SynAsynThreadTestServiceImpl.class); private static int nThreads = Runtime.getRuntime().availableProcessors() * 2 + 1; @Autowired
private ProdMapper prodMapper; private static ExecutorService executors = Executors.newFixedThreadPool(nThreads, new ThreadFactory() { private final String threadNamePrefix = "si_query_task_"; private final AtomicInteger count = new AtomicInteger(1); @Override
public Thread newThread(Runnable r) {
Thread t = new Thread(Thread.currentThread().getThreadGroup(), r, threadNamePrefix + count.getAndIncrement());
t.setDaemon(true);
return t;
}
}); @Override
public ProdSerDTO searchProd(String word) {
String url = "https://suggest.taobao.com/sug?code=utf-8&q=" + URLencord.getURLEncoderString(word) + "&callback=cb";
String response = HttpRequestUtils.getRequest(url, "0");
LoggerUtil.info(logger, "请求出参:{0}", response);
if (response != null) {
ProdSerDTO dto = JSON.parseObject(response, ProdSerDTO.class);
for (int i = 0; i < dto.getResult().size(); i++) {
SaveInfoProcessor saveInfoProcessor=new SaveInfoProcessor();
saveInfoProcessor.setProdMapper(prodMapper);
ProdDO pDo=new ProdDO();
List<Object> list =JSONArray.parseArray( dto.getResult().get(i));
pDo.setPname(list.get(0).toString());
pDo.setPnum(list.get(1).toString());
saveInfoProcessor.setProdDo(pDo);
LoggerUtil.info(logger, "i:{0},参数:{1}",i, pDo);
executors.submit(saveInfoProcessor); }
return dto;
}
return null;
} }
public class SaveInfoProcessor implements Runnable{
private static final Logger logger =Logger.getLogger(SaveInfoProcessor.class);
private ProdDO prodDo;
private ProdMapper prodMapper;
public ProdDO getProdDo() {
return prodDo;
}
public void setProdDo(ProdDO prodDo) {
this.prodDo = prodDo;
}
public ProdMapper getProdMapper() {
return prodMapper;
}
public void setProdMapper(ProdMapper prodMapper) {
this.prodMapper = prodMapper;
}
@Override
public void run() {
LoggerUtil.info(logger, "线程:{0},存入:{1}",Thread.currentThread().getName(), prodDo);
prodMapper.insert(prodDo);
}
}
附项目地址:https://gitee.com/zyf6303/flowexample
注:项目是一个springboot测试项目,一直在更新完善中,希望大神们指点一二
springboot项目线程使用2的更多相关文章
- springboot项目线程使用
下面是一个demo: public class TestThread { private static int nThreads =Runtime.getRuntime().availableProc ...
- springboot项目 线程消费队列注入报错误空指针
背景: 在调用阿里云隐私保护有一个通话记录的回执消息是一个消费线程队列,这个还别人告诉我的,因为我根本没有看出来哪里是个线程了,然后我就把它当成普通的代码拿到返回值以后然后插入数据库 可是我这边该加的 ...
- 在SpringBoot项目中添加logback的MDC
在SpringBoot项目中添加logback的MDC 先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...
- SpringBoot学习:在Interillj Idea上快速搭建SpringBoot项目
一.创建SpringBoot项目 二.导入Jar包(pom.xml) <?xml version="1.0" encoding="UTF-8"?> ...
- SpringBoot源码分析之---SpringBoot项目启动类SpringApplication浅析
源码版本说明 本文源码采用版本为SpringBoot 2.1.0BUILD,对应的SpringFramework 5.1.0.RC1 注意:本文只是从整体上梳理流程,不做具体深入分析 SpringBo ...
- SpringBoot项目集成Hystrix
Hystrix Hystrix是由Netflix开源的一个服务隔离组件,通过服务隔离来避免由于依赖延迟.异常,引起资源耗尽导致系统不可用的解决方案. 1.什么是服务熔断 服务熔断就是对该服务的调用 ...
- VisualVM分析与HelloWorld、springBoot项目
VisualVM分析与HelloWorld.springBoot项目 自从1995年第一个JDK版本JDKBeta发布,至今已经快25年,这些年来Java的框架日新月异,从最开始的Servlet阶段, ...
- 在liuunex下部署 springBoot项目
1.新建springBoot项目. 2.打包生成jar 3.丢到liunex丢到(/usr/local/software) 4.检查进程,ps -ef|grep java (java代表所有的java ...
- 【API知识】SpringBoot项目中@EnableXXX的原理
@EnableXX注解的使用场景 SpringBoot为开发人员提供了很多便利,例如如果想要定时功能,只要添加@EnableSchedule,即可配合@Schedule注解实现定时任务功能,不需要额外 ...
随机推荐
- 搭建git 服务器
Gogs 什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务. https://gogs.io/docs
- (转) GAN应用情况调研
本文转自: https://mp.weixin.qq.com/s?__biz=MzA5MDMwMTIyNQ==&mid=2649290778&idx=1&sn=9816b862 ...
- linux mysql操作命令大全
1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqla ...
- 良品铺子:“新零售”先锋的IT必经之路
良品铺子:“新零售”先锋的IT必经之路 云计算 大数据 CIO班 CIO 互联网+ 物联网 电子政务 2017-12-29 09:25:34 来源:互联网抢沙发 摘要:2017年被称为“新零售”元年 ...
- shp与json互转(转载)
转自:http://blog.sina.com.cn/s/blog_673c98be0102v78i.html 对于搞GIS开发的,这2种数据格式太重要了. 一.shp转json 这个要容易些,方法也 ...
- 1 --- Vue 基础指令
1.vue 指令 1.v-model 主要在表单中使用,文本框.teaxare.单选.下拉 等 2.v-text 文本渲染 类似{{}} 3.v-show 控制Dom显示隐藏 displ ...
- Centos7默认自带了Python2.7版本,但是因为项目需要使用Python3.x,这里提供一种比较快捷方便的安装方式
安装必要工具 yum-utils: $ sudo yum install yum-utils 使用yum-builddep为Python3构建环境,安装缺失的软件依赖,使用下面的命令会自动处理.$ s ...
- JDK7+EclipseIDE+Tomcat7.0.55++mybatis3+Maven3.2.2 构建webapp 的java 的maven项目
构建Maven项目 工具 JDK7+EclipseIDE+Tomcat7.0.55++mybatis3+Maven3.2.2 JDK 下载地址 http://www.oracle.com/techne ...
- DAY5 基本数据类型及内置方法
一.可变与不可变数据类型 1.可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 2.不可变类型:值改变,但是id也跟着变,证明是产生了新的值,是不可变类型 二.数字类型 1.整型int ...
- git报错fatal: loose object ....(stored in .git/objects/....) is emtpy
主要是非正常关机.把.git给破坏了 参考https://stackoverflow.com/questions/12571557/fixing-a-corrupt-loose-object-as-a ...