zoukankan      html  css  js  c++  java
  • 子线程指令重排

    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

    
    
  • 相关阅读:
    Ugly Numbers
    Present
    Out of Hay
    Stars(树状数组或线段树)
    Humble Numbers
    Wireless Network
    Rank List
    Argus
    食物链
    Antenna Placement
  • 原文地址:https://www.cnblogs.com/silyvin/p/9448012.html
Copyright © 2011-2022 走看看