假设,我在3个节点上部署了一个应用程序,并且从每个节点开始,一个线程试图同时获取和更新相同的数据记录。只能从中央数据库获取和更新数据。建立数据库连接的方法是线程安全的。在这种情况下,是否可以修改数据并导致不一致?如果是,我们如何解决这个问题?
答案 0 :(得分:3)
您将几个完全不同的东西混淆在一起:
通常,为了保护“线程”之间的“数据”,可以使用“锁”。保护Java中数据的一种方法是使用synchronized。
通常,在一个“节点”上运行的“线程”不能(也不会)干扰由不同“节点”上的某个线程操纵的内存数据对象。
“数据库访问”给表带来了完全不同的问题。特别是,请阅读有关isolation levels
最后, IF 您正在执行“数据库更新”,而 IF “并发”则是一个问题...那么您可能想要执行更新DB transaction中的(s)。
“交易”是ACID: