每次在我的网站上请求一个页面时,我都会通过如下服务调用记录一些详细信息:
logService.logPageRequest(session, request, contentId);
此服务调用使用静态 FileUtils(我自己的)方法对文件进行实际更新。
public static void appendToTextFile(String string, String fileRootDirectory, String subdirectory, String filename, boolean startOnNewLine) throws Exception {
// code irrelevant to the question removed
String filePath=fileDirectory+"/"+filename;
File file=new File(filePath);
if(file.exists()) {
FileWriter out = new FileWriter(filePath, true);
if(startOnNewLine) {
out.write("\r\n");
}
out.write(string);
out.close();
} else {
FileWriter out = new FileWriter(filePath);
out.write(string);
out.close();
}
每隔一段时间(假设每 15 分钟安排一次),我执行另一个服务,该服务重命名此文件并开始处理它。
我想了解如何确保两个并发写入都是安全的,并且在写入过程中不执行重命名。我想答案将是某种形式的同步。