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的方法启动线程.示例代码如 ...
随机推荐
- pycharm激活码 pycharm安装后激活方式 pycharm汉化包安装
汉化包 下载地址: 链接:http://pan.baidu.com/s/1pL6xWl9 密码:x1fh 将下载好的文件解压:将resources_cn.jar放到安装目录下的lib目录下即可 重启 ...
- toplink
TopLink,是位居第一的Java对象关系可持续性体系结构,原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink.TOPLink为在关系数据库表中存储 ...
- Docker 启动时报错:iptables:No chain/target/match by the name
重新启动docker后,就好了. service docker restart
- 一篇文章搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别
一篇文章搞懂高级程序员.架构师.技术总监.CTO从薪资到技能的区别 http://youzhixueyuan.com/senior-programmers-architects-technical-d ...
- MFC不同分辨率和缩放下正常显示的方法
方法1:为了满足Windows操作系统上不同分辨率下的显示,我们在OnPaint中重绘.
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...
- POJ-2442-Sequence(二叉堆)
POJ-2442 Description Given m sequences, each contains n non-negative integer. Now we may select one ...
- UVa-401-Palindromes(回文)
这一题的话我们可以把映像字符的内容给放入一个字符串常量里面,然后开辟一个二维的字符串常量数组,里面放置答案. 对于回文实际上是很好求的,对于镜像的话,我们写一个返回char的函数,让它接收一个char ...
- mysql 报错Authentication method 'caching_sha2_password' is not supported
原文地址:https://blog.csdn.net/u011583336/article/details/80999043 之前工作中用的数据库多是ms sqlserver,偶尔用到mysql都是运 ...
- 如何用纯 CSS 创作一个渐变色动画边框
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/odpRKX 可交互视频教 ...