博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
集合动态添加元素,实时遍历
阅读量:5101 次
发布时间:2019-06-13

本文共 3039 字,大约阅读时间需要 10 分钟。

1、设置一个静态集合:

public static HashSet
pendingArray = new HashSet<>();//静态文件目录保存

2、定时刷新,添加新的元素

@Async    //@Scheduled(cron = "0/10 * * * * ?")    @Scheduled(cron = "0 0/2 * * * ?")    public void timedTaskDataAnalysis(){        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@定时任务" + df.format(new Date()));        try {            synchronized (OrderDataInsertService.pendingArray) {//重点在synchronized方法上                HashSet
newList = orderDataAnalysisService.fileParsingGetData(newfilePath+new SimpleDateFormat("yyyyMMdd").format(new Date()),oldfilePath);//新 if(newList!=null){ int pendingSize; pendingSize = OrderDataInsertService.pendingArray.size(); //判断文件名称是否重复 OrderDataInsertService.pendingArray.addAll(newList); if(pendingSize == 0){ orderDataInsertService.fileParsingGetData(newfilePath+new SimpleDateFormat("yyyyMMdd").format(new Date()),oldfilePath); } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); logger.info("ErrCode:-------错误描述"); } } 3、synchronized应用的具体方法实现
/**     *      * @return  获取交易数据文件 解析并保存     */    public void fileParsingGetData(String newfilePath,String oldfilePath){        int index = 0;        TvipReturnDataType listName = new TvipReturnDataType();        List
newStrArrays = new ArrayList<>();//成功数据 //解析已被复制的二进制文件 遍历所有的文件信息,将数据解析放入list集合中 List
listAll = new ArrayList
(); while(pendingArray.size()>0){ index++; doProcess(newfilePath,oldfilePath); } if(pendingArray.size() == 0){ logger.info("==============================TRX文件上传文件夹为空,已操作文件个数:"+index); index=0; } } @Transactional private void doProcess(String newfilePath,String oldfilePath){ String filePath = pendingArray.iterator().next(); System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"+pendingArray.size()+filePath); try { synchronized (pendingArray) { List
errorStrArrays = new ArrayList<>();//错误数据 String fileName = filePath; filePath = newfilePath+connector+filePath; String headerFile = "";//头文件 String fileData = "";//数据 String crcData = "";//crc数据文件 File file1 = new File(filePath); byte[] bytes = ByteFileAnalysisUtilEntity.File2byte(file1); String[] listString = ByteFileAnalysisUtilEntity.byte2HexString(bytes).split("0D0A0D0A0D0A"); for(int i = 0;i
 

 

 

 

转载于:https://www.cnblogs.com/huyanlon/p/10641130.html

你可能感兴趣的文章
js斐波拉切
查看>>
【41】102. Binary Tree Level Order Traversal
查看>>
BZOJ_1029_[JSOI2007]_建筑抢修_(贪心+优先队列)
查看>>
None.js 第五步 Buffer(缓冲区)
查看>>
dede文章页调用当前栏目链接方法
查看>>
django 自定义标签
查看>>
第二节课课堂作业
查看>>
在线mark.down编辑器
查看>>
PAT(乙级)1016
查看>>
1、mysql创建用户和授权总结
查看>>
【学校集训】【USACO15DecG】Bessie's Dream
查看>>
团队编程项目作业5-小组评分
查看>>
隔行变色效果
查看>>
js监听滚动条滚动事件
查看>>
java web实现文件下载的注意事项
查看>>
SQL数据库
查看>>
ORA-32004: obsolete and/or deprecated parameter(s) specified
查看>>
安装中文输入法
查看>>
glassfish 自定义 jaas realm
查看>>
Glassfish 设置时区
查看>>