该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是个定时任务 循环分批请求数据后同步信息到数据库
如果不让线程停止 SynAppData synAppData = systemDao.getType(5);有机会获取到上一次插入的数据 然后就会重复插入数据 请教各位大神这是为什么???? 加同步和事务都试过了 也会有这个问题
int statusLocation = 0;
try {
while (statusLocation == 0) {
String getTime = "0";
//获取上次查询的时间
// Thread.sleep(1000); 加了这个就没问题
SynAppData synAppData = systemDao.getType(5);
if (synAppData != null) {
getTime = simpleDateFormatUrlDate.format(synAppData.getGettime());
}
String url = getServerUrl.getServerUrl();
String path = url + "/app/outside/getLocation?getTime=" + getTime;
String str = UrlConnection.doGet(path);
JSONObject jsonObject = JSONObject.parseObject(str);
if (jsonObject.getString("code").equals("200")) {
int status = jsonObject.getJSONObject("data").getInteger("status");
//status = 1 为获取数据完成,终止发送请求 0为未完成
if (status == 1) {
statusLocation = 1;
} else {
String dataList = jsonObject.getJSONObject("data").getString("data");
List tlocationList = JSONObject.parseArray(dataList, Tlocation.class);
if (tlocationList.size() > 0) {
//添加信息
systemService.AddLocation(tlocationList);
//跟新刚插入信息的时间最新的一条,下次查询则查询这时间之后的
systemDao.insertSynAppData(synAppData2); }
}
} else {
statusLocation = 1;
}
}
} catch (Exception e) {
e.printStackTrace();
}