求助,为什么线程中的方法不执行

Lucas&&r 2021-05-18 11:03:32
Thread A = new Thread(new Runnable(){
@Override
public void run() {
try {
System.out.println("A-----");
code1(startTime, endTime/2, sdf, timeMap);
}
finally {
}
}
});


Thread C = new Thread(new Runnable(){
@Override
public void run() {
try {
System.out.println("B-----");
code1(endTime/2,endTime,sdf,timeMap);
}finally {
}
}
});



A.start();
C.start();


code1:
public void code1(Long startTime, Long endTime, SimpleDateFormat sdf, Map<String, Map<String, CarStateVo>> timeMap) {
for (Long i = startTime + 1000; i <= endTime; i += 1000) {
//每一秒要进行查询
//先把上一秒的数据放进来
String dateOld = sdf.format(new Date(i - 1000));
String date2 = sdf.format(new Date(i));
//现将上一秒的数据放入
timeMap.put(date2, timeMap.get(dateOld));
Map<String, CarStateVo> carStateVos = new HashMap<>();
//现将上一秒的数据放入
carStateVos.putAll(timeMap.get(date2));
/*LambdaQueryWrapper<CarStateCai> lambdaQ = Wrappers.lambdaQuery();
lambdaQ.eq(CarStateCai::getUpdateTime,new Date(i));
List<CarStateCai> list1 = this.list(lambdaQ);*/
Map<String, Object> map = new HashMap<>();
map.put("update_time", new Date(i));
List<CarStateCai> list1 = carStateMapper.selectByMap(map);
//判断查询的是否有数据
//在这查询如果没有就要上一个了
if (list1.size() > 0) {
for (CarStateCai carStateCai : list1) {
if (carStateCai.getCarNum() != null && !"".equals(carStateCai.getCarNum())) {
//读取redis中的信息
String value = redisService.getValue(carStateCai.getCarNum());
CarStateDto carStateDto1 = JSON.parseObject(value, CarStateDto.class);
CarStateVo carStateVo = getCarStateVo(carStateDto1, carStateCai);
//如果有数就会被覆盖
carStateVos.put(carStateVo.getCarNum(), carStateVo);
}
}
String date1 = sdf.format(new Date(i));
System.out.println(date1+"运行");
timeMap.put(date1, carStateVos);
}
}
}
...全文
21680 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
潘宏践踏 2021-05-27
  • 打赏
  • 举报
回复
引用 2 楼 Lucas&&r 的回复:
引用 1 楼 Little BigUs 的回复:
你这程序能运行吗,run方法里面的变量都没定义,而且for循环也不是每秒执行一次
大佬,那我想实现两个for循环同步进行这样写对嘛
你这代码真的太糟糕了,https://bbs.csdn.net/topics/392371067,先学会怎么提问题不知所云。你的描述是同步进行?多线程是有时间片的切换的, 并行是同一时刻设备能并行执行的程序个数,并行线程数=cpu个数 * 核数。https://blog.csdn.net/weixin_33739646/article/details/86010683
Lucas&&r 2021-05-25
  • 打赏
  • 举报
回复
引用 1 楼 Little BigUs 的回复:
你这程序能运行吗,run方法里面的变量都没定义,而且for循环也不是每秒执行一次
大佬,那我想实现两个for循环同步进行这样写对嘛
Little BigUs 2021-05-20
  • 打赏
  • 举报
回复
你这程序能运行吗,run方法里面的变量都没定义,而且for循环也不是每秒执行一次

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧