月凉凉 2023-12-05 16:24 采纳率: 84.2%
浏览 5
已结题

异步提交任务,导致数据错乱的问题

不打debug的情况下handler处理的计算结果主键ID拿的都是线程最后一个的ID,打debug等待一下就能正常拿到值了,请问如何避免这种问题发生。

img

  • 写回答

2条回答 默认 最新

  • 进步·于辰 2023-12-06 14:02
    关注

    虽然不知道这些功能是做什么的,不过我大概懂你意思了,你是想在每个线程中都可以拿到ID吧,而不是现在这样只拿到最后一个。
    如果要实现这样的功能,代码现在这样肯定不行。因为现在拿ID的代码是在主线程跑的,你让主线程休眠了10s的确可以保证能拿到ID,但肯定也是最后一个。
    我的想法:

    创建一个数组、列表或者集合都行,用来临时存储ID,比如:Collections.synchronizedList(new ArrayList())new Vector()(用这类结构都省去了手动加锁synchronized),自己再设计一下。然后在休眠10s后遍历从中获取ID。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 修改了问题 12月5日
  • 创建了问题 12月5日

悬赏问题

  • ¥20 易康econgnition精度验证
  • ¥15 线程问题判断多次进入
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致