java - 多线程模式下的快速文件处理
问题描述
我正在用java开发一个Web应用程序。它有一个在每个页面请求时都会读取的文件,但我必须考虑更改它(这很少见)。你需要想出一些东西来让一切尽快工作。有什么建议吗?
解决方案
您可以使用一种 copy_on_change。如果你的文件是 /path/myFile_v1.txt 写类似的代码
private AtomicInteger version=1;
public String getFilePath() {
return "/path/myFile_v"+version.get()+".txt"
}
public void synchronized makeAChange() {
// create a new copy of the file with some changes
version.incrementAndGet();
}
您可以在一段时间后删除旧副本或每次删除版本 2。进行更改时不会阻止读取线程。
推荐阅读
- c# - 使用 Google protobuf 格式化 JSON
- android - 在 android 或 ios 的不同应用程序上从 youtube 应用程序获取事件
- scala - 关于复制案例类的表现
- sql - 返回 1 行 SQL 查询?
- java - 如何使用收集器创建摘要
- azure - Nuget Server/Artifacts Feed 中显示的非专有 Nuget 包
- python - 用于循环理解的高级python
- go - 如何避免包装函数中的动态断言?
- graph-algorithm - 从图形生成道路网格
- terraform - Terraform 根据条件在不同的提供者之间进行选择