【坑儿】多次调用自定义接口上传数据,记录上传次数bug

来源:互联网 发布:javascript input赋值 编辑:程序博客网 时间:2024/06/06 04:14

开始写的代码,其中标识 DailyWorkPut 记录多次出现反复,由于开始数据量少,排查了好久,一直以为是网络请求出现问题。。。。。后来增加测试数据后,用 log 打印才定位到本部分代码,发现这里多次开启同步线程,内部代码访问并修改了 DailyWorkPut  ,,,,原来是最低级的错误,同步线程未加锁导致

注:这种问题最恶心,不定时出现错误,而且反复无常没有规律。。。

private void putProjectDailyWork(final String jobId , final String workContent) {    new Thread(new Runnable() {        @Override        public void run() {                int code = putDailyWorkMsg(jobId , workContent);                if (code == 200) {                    //请求成功                    DailyWorkPut++;                    if (DailyWorkPutTag == DailyWorkPut) {                        mHandler.sendEmptyMessageDelayed(3, 800);                    }                } else {                    //请求失败                    mHandler.sendEmptyMessageDelayed(2, 800);                }        }    }).start();}

修改后:

lock = new ReentrantLock();

private void putProjectDailyWork(final String jobId , final String workContent) {    new Thread(new Runnable() {        @Override        public void run() {            //线同步加锁,防止多线程同时访问记录的 DailyWorkPut 数据            //1.获取锁            lock.lock();            try{                Log.i("UPDIALY", "上传信息::"+jobId+"==="+workContent);                int code = putDailyWorkMsg(jobId , workContent);                if (code == 200) {                    //请求成功                    DailyWorkPut++;                    Log.i("UPDIALY", "put---daily----work----old:::"+DailyWorkPut);                    if (DailyWorkPutTag == DailyWorkPut) {                        Log.i("UPDIALY", "put---daily----work----old:::"+DailyWorkPut+"==="+DailyWorkPutTag);                        mHandler.sendEmptyMessageDelayed(3, 800);                    }                } else {                    //请求失败                    mHandler.sendEmptyMessageDelayed(2, 800);                    Log.i("UPDIALY", "put------失败");                }            }finally {                //2.释放锁                lock.unlock();            }        }    }).start();}

原创粉丝点击