之前采用了synchronized 保持数据同步,前期确实达到了数据同步准确性的要求
但后期大数据用户下访问变慢,出现卡顿的现象。麻烦帮代码优化,或提供好的方法解决数据同步问题。
public synchronized UserTaskVO saveOpenRob(int taskId, String mobile) { //任务信息【不加同步,该信息取到后有可能已经被修改了。】 TaskVO task = rtaskDAO.findTaskById(taskId); int now = Integer.parseInt(new DateTime().toString("HHmm")); int start = Integer.parseInt(task.getStartTime().replace(":", "")); int end = (start + 100) > 2359 ? 2359 : (start + 100); //用户任务记录 UserTaskVO userTask = rtaskDAO.findUserTaskToday(task.getId(), mobile); if (userTask != null && userTask.getTaskStatus() == 2) { int count = rtaskDAO.queryOpenCount(task.getId()); if (now > end || count >= task.getBagNum()) {// 无剩余红包、延迟拆 userTask.setFlowSize(0); userTask.setSeq(0); userTask.setTaskStatus(3); userTask.setPresent("来晚了,红包被抢走了"); rtaskDAO.updateUserTask(userTask); } else { //更新任务信息、用户任务记录 saveProcess(task, userTask); } } return userTask; }