@Service("updateRobotAmountService")
public class updateRobotAmountService {
private Logger logger = Logger.getLogger(updateRobotAmountService.class);
@Resource(name = "daoSupport")
private DaoSupport dao;
@Resource(name = "daoSupport2")
private DaoSupport2 dao2;
private ExecutorService executeService = null;
@PostConstruct
public void initThreadPool()
}
/**
* 摧毁线程池
*/
@PreDestroy
public void shutdownThreadPool()
{
executeService.shutdown();
}
public void work() {
batchQueue.put(data1);
}
executeService.execute(tasks);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.toString());
}
}
private class Task implements Runnable{
private LinkedBlockingQueue<PageData> BatchQueue;
public Task(LinkedBlockingQueue<PageData> bQueue){
this.BatchQueue=bQueue;
}
@Override
public void run() {
List<PageData> pList=(List<PageData>) dao2.findForList("AccountMapper.getRobotAmount", p1);
List<PageData> robot_list=(List<PageData>) dao2.findForList("AccountMapper.getRobotList", p1);
for(int j=0;j<robot_list.size();j++){
PageData p=robot_list.get(j);
dao.update("AccountMapper.updateAmountForSteamUid",p);
int app_id=(int) p.get("app_id");
Optional<PageData> countDataOptional=pList.stream().filter(d->(int)d.get("app_id")==app_id).findFirst();
if(countDataOptional.isPresent()){
PageData countData=countDataOptional.get();
p.put("amount", countData.get("amount"));
int code=(int) dao.update("AccountMapper.updateAmount", p);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class updateRobotAmountService {
private Logger logger = Logger.getLogger(updateRobotAmountService.class);
@Resource(name = "daoSupport")
private DaoSupport dao;
@Resource(name = "daoSupport2")
private DaoSupport2 dao2;
private ExecutorService executeService = null;
@PostConstruct
public void initThreadPool()
{
//程序启动时初始化20个线程池大小的固定线程池
}
/**
* 摧毁线程池
*/
@PreDestroy
public void shutdownThreadPool()
{
executeService.shutdown();
}
public void work() {
try {
//查询数据
if(list!=null&&list.size()>0){
//实例化一个无界队列
for(int i=0;i<list.size();i++){
//将数据放在队列里
batchQueue.put(data1);
}
for(int i=0;i<list.size();i++){
//启动线程从对列里面取出数据执行
executeService.execute(tasks);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.toString());
}
}
private class Task implements Runnable{
private LinkedBlockingQueue<PageData> BatchQueue;
public Task(LinkedBlockingQueue<PageData> bQueue){
this.BatchQueue=bQueue;
}
@Override
public void run() {
try {
//从队列里面拿出一个数据执行
List<PageData> pList=(List<PageData>) dao2.findForList("AccountMapper.getRobotAmount", p1);
List<PageData> robot_list=(List<PageData>) dao2.findForList("AccountMapper.getRobotList", p1);
for(int j=0;j<robot_list.size();j++){
PageData p=robot_list.get(j);
dao.update("AccountMapper.updateAmountForSteamUid",p);
int app_id=(int) p.get("app_id");
Optional<PageData> countDataOptional=pList.stream().filter(d->(int)d.get("app_id")==app_id).findFirst();
if(countDataOptional.isPresent()){
PageData countData=countDataOptional.get();
p.put("amount", countData.get("amount"));
int code=(int) dao.update("AccountMapper.updateAmount", p);
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}