【问题标题】:Synchronize rest application and saving to file同步其余应用程序并保存到文件
【发布时间】:2020-08-05 01:25:38
【问题描述】:

我的情况有点奇怪,我有方法:

public void generateRecords(Request request) {
    String pathToFile = request.getPathFile();
    String recordOne = generateRecordOne(request);
    String recordTwo = generateRecordTwo(request);

    fileService.writeToFile(pathToFile, recordOne);
    fileService.writeToFile(pathToFile, recordTwo);
}

public void writeToFile(String path, String content) {
        try {
            FileWriter writer = new FileWriter(path, true);
            writer.append(content);
            writer.close();
        } catch (IOException e) {
            e.printStack();
        }
}

generateRecords() 正在执行的是休息端点。我得到这样的东西:

id:1:record1 

id:2:record1 

id:1:record2

id:2:record2

虽然我想得到这样的东西:

id:1:record1 

id:1:record2 

id:2:record1

id:2:record2

它有时会发生,但它仍在破坏我的文件。我怎样才能避免这种情况?

【问题讨论】:

    标签: java rest wildfly


    【解决方案1】:

    尝试在 writeToFile 方法上使用synchronized

    另外,请考虑使用 try-with-resources 语句。在您现在拥有的代码中,您的编写器中的异常将导致不关闭 FileWriter。

    public synchronized void writeToFile(String path, String content) {
        try (FileWriter writer = new FileWriter(path, true)) {            
            writer.append(content);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多