多线程中是否有事务提交的模拟?



我经常有一种印象,即可以在事务和线程之间进行紧密的类比。事实上:

  1. 事务是一系列操作。正在运行的线程是一系列语句。
  2. 事务读取/修改行和表(就关系数据库而言(。线程读取/修改类和静态字段。
  3. 事务利用锁来实现数据一致性。线程也是如此。

如果这个类比真的发生了,那么每个人都会更容易使用他们对多线程的知识来理解事务(反之亦然(。

但是,有一个问题:在多线程世界中,事务提交(或回滚(似乎没有紧密的类比。

这是否意味着现实中的类比只是一种幻觉,在学习事务时最好不要使用有关多线程的知识?还是还有提交/回滚的类比?

在Java中,可以让一个线程等待另一个线程死亡(参见Thread.join(。事务的提交/回滚操作似乎类似于线程的死亡。

最新更新