多线程中是否存在用于事务提交的模拟?

时间:2018-06-12 07:27:06

标签: multithreading transactions

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

  1. 交易是一系列行动。正在运行的线程是一系列语句。
  2. 事务读取/修改行和表(就关系数据库而言)。线程读取/修改类和静态字段。
  3. 事务利用locks来实现数据一致性。 So做线程。
  4. 如果真的发生了类比,那么每个人都可以更容易地使用他们的多线程知识来理解交易(反之亦然)。

    然而,存在一个问题:在多线程领域,事务提交(或 rollback )似乎没有类似的近似。

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

1 个答案:

答案 0 :(得分:2)

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