• 子线程指令重排


    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

    
    
  • 相关阅读:
    [转]编程能力与编程年龄
    github for windows 使用
    github 改位置
    Linux下设置和查看环境变量
    Docker基础 :网络配置详解
    docker入门实战笔记
    Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建
    使用nsenter工具进入Docker容器
    Docker从入门到实战(四)
    Docker从入门到实战(三)
  • 原文地址:https://www.cnblogs.com/silyvin/p/9448012.html
Copyright © 2020-2023  润新知