悲观与乐观并发控制实现

时间:2016-08-12 05:21:21

标签: mysql concurrency optimistic-concurrency pessimistic-locking

我已经理解这些并发控制如何以简单的英语运行。但是我更感兴趣的是如何在代码中完成悲观控制。这就是我的感受,让我们假设有两个用户正在尝试更新维基文档

悲观控制

在这里,我们被告知要使用交易。

Intent i = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(i);

然而,这仍然容易覆盖以前的更新。我觉得必须在事务中进行第二次检查,看看是否在select语句之后发生了任何写操作,如果是回滚或其他提交。我是对的吗?

1 个答案:

答案 0 :(得分:1)

你有两种选择:并发(悲观):

Table level Locking and Row Level Locking:

但请记住,如果您有多个用户,锁定可能会导致DEADLOCK。使用并发时需要考虑很多事情。祝你好运!

更新:

由于锁定可能导致死锁和其他并发问题,您可以实现签入和签出功能,当用户签出某些记录时,它会阻止其他用户访问查看相同的记录。