Callable线程
写一个Callable线程
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
public class SaveGameCallable implements Callable<HashMap<String, Object>> { private List<Phone> phoneList;
private HashMap<String, Object> data; public List<Phone> getPhoneList() {
return phoneList;
} public void setPhoneList(List<Phone> phoneList) {
this.phoneList = phoneList;
} public SaveGameCallable(List<Phone> phoneList, HashMap<String, Object> data) {
super();
this.phoneList = phoneList;
this.data = data;
} @Override
public HashMap<String, Object> call() throws Exception {
List<Map<String, Object>> userGameList = new LinkedList<Map<String, Object>>();
int size = phoneList.size();
UserService userService = (UserService) BeanUtil.getBean("userService"); for (int j = 0; j < size; j++) {
Thread.sleep(50);
Phone phonexx = phoneList.get(j);
String mobilephone = phonexx.getMobilePhone();
if(StringUtil.isBlank(mobilephone)){
continue;
} User user = userService.getUserByPhone(mobilephone); if(user != null && !user.equals("")){
Map<String, Object> map = new HashMap<String, Object>(20);
map.put("success","true");
if (StringUtil.isNotBlank(user.getCardId())) {
//前六位置为*,7-14与17位显示 ,其他都为*
map.put("idnumber", "******" + user.getCardId().substring(6, 14) + "**" + user.getCardId().substring(16, 17) + "*");
} else {
map.put("idnumber", "");//前六位置为*,7-14与17位显示 ,其他都为*
}
userGameList.add(map);
data.put("userGameList", userGameList);
}else{
data.put("errorCode", "该手机号【"+mobilephone+"】用户不存在!");
}
}
return data;
} }
调用Callable线程:
public void getBorrowTenderLog() {
try{
//调用线程处理
ExecutorService exec = Executors.newCachedThreadPool();
try {
Future<HashMap<String, Object>> result = exec.submit(new BorrowTenderLogCallable(phoneModel.getPhone(), (HashMap<String, Object>) data));
data = result.get();
} catch (Exception e1) {
e1.printStackTrace();
} finally {
exec.shutdown();
}
LOGGER.info("【获取日志信息: 】"+getStringOfJpaObj(data));
printWebJson(getStringOfJpaObj(data));
data.clear();
//优化JVM年轻代资源释放速度
data = null;
} catch (Exception e) {
LOGGER.error(e.getMessage());
e.printStackTrace();
}
}
Callable线程的更多相关文章
- Future Callable 线程池 例1
package com.niewj.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.Exec ...
- 深入Callable及Runnable两个接口 获取线程返回结果
今天碰到一个需要获取线程返回结果的业务场景,所以了解到了Callable接口. 先来看下下面这个例子: public class ThreadTest { public static void mai ...
- JavaSE---多线程---Callable、Future
1.概述 1.1 JDK1.5后,Java提供了Callable接口,该接口提供一个call方法作为线程执行体,该call方法可以 有返回值.声明抛出异常: 因此,我们可以直接将Callable接口 ...
- Callable创建线程
(1)Callable接口更像是Runnable接口的增强版,相比较Runable接口,Call()方法新增捕获和抛出异常的功能;Call()方法可以返回值<br> (2)Future接口 ...
- Callable,阻塞队列,线程池问题
一.说说Java创建多线程的方法 1. 通过继承Thread类实现run方法 2. 通过实现Runnable接口 3. 通过实现Callable接口 4. 通过线程池获取 二. 可以写一个Call ...
- Java再学习——线程之创建
Java创建线程有两种方法,一种是继承Thread,另一种实现Runnable或Callable接口. 一,继承Thread public class APP { public static void ...
- java线程学习(一)
1.简介 java基础知识部分线程创建的三种方式.线程执行的样例. 代码地址:http://git.oschina.net/blue_phantom/javaj 包位置:package com.blu ...
- java异步线程池同时请求多个接口数据
一.主要使用类 . ExecutorService java线程池类 申明方式:ExecutorService exc = Executors.newFixedThreadPool(requestPa ...
- java多线程创建-Thread,Runnable,callable和threadpool
java创建多线程的方式有许多种,这里简要做个梳理 1. 继承Thread类 继承java.lang.Thread类,创建本地多线程的类,重载run()方法,调用Thread的方法启动线程.示例代码如 ...
随机推荐
- Node + Express + MySQL 接口开发完整案例
https://blog.csdn.net/u013216976/article/details/85273770 https://github.com/Apache-Ra/node-express- ...
- project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了
project .mpp 查看当天工作任务 1.选择自己 2.选择起始和终止时间 就显示当天的任务了
- python基础一day3 字符串
对字符串进行的任何操作都是形成新的字符串. 切片顾头不顾尾 倒着取: 因为顾头不顾尾,所以4要取到 当步长省略时,可以同时省略最后一个冒号 写0时,取不到,什么都不写,可以取到 倒着取出全部的值,两种 ...
- 关于Java的三种普通排序
首先要知道是哪几种排序 这里我们所说的是 冒泡排序,选择排序以及插入排序 然后要理解大概的排序速度 : 插入<选择<冒泡 下面是代码 大家可以拷贝自己在java环境里运行运行! publi ...
- VW结合rem进行移动端布局
---恢复内容开始--- html { font-size:10vw: } div { width: 1rem; height: 1rem; } VW这个单位适合用来适应不同设备的 一个设备的宽度就为 ...
- 01matplotlib
一. 简介 1.概念 matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建. 2.作用 1)能将数据进行可视化,更直观的呈现 2)使 ...
- nginx 获取真实ip
使用阿里云SLB,无法获取真实ip问题 官方给出的是如下用法,需要安装模块,大体上是没有错的,但是比较模糊,实际操作中可能会踩坑,所以参考学习即可,不必照搬.(那个http_realip_module ...
- ssh服务介绍
基本介绍 ssh:安全的远程登陆 要有客户端与服务器端,客户端主动链接服务端,那么服务端地址是不能变的. socket:套接字 标识应用唯一的地址 tcp/udp port端口号 cat /etc/s ...
- linux配置网桥
实现环境: centos7 Linux devstack01 3.10.0-693.el7.x86_64 1.创建br配置文件,ifcfg-br2 cp ifcfg-br0 ifcfg-br2 2 ...
- my97datepicker插件日期值改变事件 等同于input的onchang()时间
官网Demo地址http://www.my97.net/demo/index.htm <input type="text" class="Wdate" v ...