开发中遇到的并发和数据库问题

本文探讨了在开发中遇到的并发问题,特别是状态修改引发的问题和安卓Sqlite的多线程操作。针对并发冲突,提出了几种解决方案,并分析了各自的优缺点。同时,文章还讨论了安卓Sqlite在多线程环境下的限制,临时文件的处理,数据库主键的选择以及添加索引的重要性。
摘要由CSDN通过智能技术生成
并发问题
一个状态修改引起的问题

        就是我们本地做了同步和异步两种操作,每个操作都会牵扯到对某个状态的修改,判断,展示。除此之外,在别的快递员也可以在别的机器上对某个订单的同个状态进行修改,这么多的不确定因素导致的结果很多,可能会有意想不到的问题,即便测试也很难把所有的情况都测出来,会导致线上很多问题。
那这个问题该怎么解决?

本地和服务器因为同一个状态撕咬后的解决方案

       并发问题一直都是程序员头疼的问题,一般来说市面上大多数的安卓端app是不存在并发情况的,在我目前负责的项目中有线程池不停的轮询数据库操作,这样就会导致并发。

  1. 每个单号的提交进行状态的修改
  2. 提交的时候对状态修改
  3. 单号与任务号的绑定设置在提交的时候

问题现状:
1、同一库区多个未提交的任务;
2、多个未提交的任务是同一个理货员在同一个PDA建立的;
3、多个未提交的任务是同一个理货员在不同的PDA建立的;
4、多个未提交的任务是同一个部门不同的理货员建立的;
5、多个未提交的任务共同点为未提交且每个任务有部分运单已扫描;

中转业务处理现状:
1、同一库区任务未提交前,任务下拉扫描明细会获取该库区所有的运单号信息,包含已扫、未扫的运单号;
2、运单号详情包含“运单号、重量、体积、状态”
3、同一库区不同任务已扫描的运单CE端需要重传已扫描信息给中转(中转业务要求)

解决方案分析

方案一、不同任务下拉扫描详情时状态为已扫描的运单号理货员不重扫。
有利端:
1、不同任务理货员不需要手动重扫运单状态为已扫描的运单
2、节省了人力:快递体积小、数量多,假如新建任务后需要重扫已扫描的运单,会带来人力的大量消耗
不利端:
1、同一个理货员创建的不同任务,由新建任务时CE端自动同步扫描的运单号信息,会导致扫描时间不一致;
2、不同的理货员创建的不同任务,新建任务时CE端自动同步扫描的运单号信息中理货员工号不一致,会导致理货员工作量无法统计的问题;
3、导致PDA页面显示的已扫描的运单号错乱,理货员不清楚此种运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值