CountDownLatch countDownLatch = new CountDownLatch(1);
try{
boolean anotherDay = checkAnotherDay();
try{
if(anotherDay) {
String logUrlYestoday = logUrl;
int index = logUrlYestoday.lastIndexOf(".");
StringBuilder stringBuilder = new StringBuilder(100);
stringBuilder.append(logUrlYestoday.substring(0, index+1)).append(dateIbFormate.format(lastTime)).append(".log");
int res = readLogFile(stringBuilder.toString(), false);
if(res == 0) {
logger.info("read yesterday success");
} else {
logger.error("read yesterday error, {}", res);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
} finally {
countDownLatch.countDown();
}
countDownLatch.await();
readLogFile(logUrl, true);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
在未使用CountDownLatch前,有出现最后一行
readLogFile
的数据先于前面的代码数据执行插入操作了,故为了确保数据有序性,加入CountDownLatch
性质有点像:https://www.cnblogs.com/silyvin/p/9106641.html