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注解实现定时任务功能,不需要额外 ...
随机推荐
- LuoguP2257 YY的GCD
题目描述 神犇YY虐完数论后给傻×kAc出了一题 给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对 kAc这种傻×必然不会了,于 ...
- P3211 [HNOI2011]XOR和路径
思路 看到异或,容易联想到二进制位之间是相互独立的,所以可以把问题变成每个二进制位为1的概率再乘上(1<<pos)的值 假设现在考虑到pos位,设f[i]为第i个节点期望的异或和第pos位 ...
- printf和std::cout ...endl
printf效率要比std::cout...endl高些,可以减少打印所花时间
- 【译】第45节---EF6-索引属性
原文:http://www.entityframeworktutorial.net/entityframework6/index-attribute-in-code-first.aspx Entity ...
- 1月4日笔记 (vi编辑器)更新...
vi编辑器,全称是visual interface,可以执行输出.删除.查找.替换等众多的文本操作. vi并不是一个排版程序,不可以对字体.格式.段落等其他的属性进行编排. vi是全屏文本编辑程序 ...
- Maven Web项目解决跨域问题
跨域问题目前笔者所用到的方案大致有三种:jsonp,SpringMVC 4以上注解方式和cros三方过滤器. Jsonp JSONP(JSON with Padding)是一个非官方的协议,它允许在服 ...
- Android之使用传感器获取相应数据
Android的大部分手机中都有传感器,传感器类型有方向.加速度(重力).光线.磁场.距离(临近性).温度等. 方向传感器: Sensor.TYPE_ORIENTATION 加速度(重力)传感器: ...
- Codeforces 767D - Cartons of milk
题目链接:http://codeforces.com/contest/767/problem/D D比C水系列. 将商店里面的牛奶按照保质期升序排序(显然优先买保质期久的)考虑二分答案,然后再将整个序 ...
- 单源最短路——Dijkstra模板
算法思想: 类似最小生成树的贪心算法,从起点 v0 每次新拓展一个距离最小的点,再以这个点为中间点,更新起点到其他点的距离. 算法实现: 需要定义两个一维数组:①vis[ i ] 表示是否从源点到顶点 ...
- React + Ant Design网页,配置
第一个React + Ant Design网页(一.配置+编写主页) 引用博主的另外一篇VUE2.0+ElementUI教程, 请移步: https://blog.csdn.net/u0129070 ...