我正在编写一个Java应用程序,它应该(除其他外)生成一个整数序列,从给定的数字开始(例如900,901,902,903,... - 900作为参数给出)
决定应用程序将使用仅包含当前数字的纯文本文件。当应用程序启动时,它会检查文件是否已经存在,如果没有,则创建它并将初始编号写入其中。每次应用程序即将生成一个新数字时,它应该读取文件中的当前值,将其用作当前序列值,然后递增文件中的数字。
我现在想,如何以原子方式完成这两件事(关于同一应用程序的其他运行实例):
关于如何以其他方式实现所列目标的建议也值得赞赏。
答案 0 :(得分:2)
使用数据库序列将是一个简单而可靠的解决方案,但您已确定它将是一个文件。然后,您需要自己管理分布式同步。有一些系统提供,如Terracotta或Hazelcast。我肯定会使用其中一个而不是基于锁定文件来实现一个新的。为什么不是数据库?
答案 1 :(得分:1)
当客户端写入文件时,我会创建一个锁定文件,并在写入过程完成时立即删除该锁定文件。
当存在锁定文件时,其他客户端将不会读取或写入db文件并等到锁定文件被删除 - 允许同时读取。
你有疑问:
问题: