首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的同步

java中的同步
EN

Stack Overflow用户
提问于 2018-04-26 09:02:37
回答 2查看 105关注 0票数 1

在一次面试中,我被问到一个用例,面试官问:

假设你有一个银行账户,你在网上购物,你弟弟有你的自动取款机卡,而他正准备做一笔交易,你父亲已经去银行给一张提款支票了。所有这3项交易同时发生。

如何管理这些事务,使余额不透支?

Me:我说过我会在帐户余额对象上使用同步

面试官:不满意。下一个问题。

谁能解释一下答案是什么?数据库锁或事务隔离是一种更好的方法吗?

我是JAVA的初学者,所以请原谅我的天真。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-26 09:11:02

通常,当您开始一个项目时,必须处理一些行为。事务隔离就是其中之一,所以在这种情况下,我将评估最合适的事务级别。要了解更多信息,我建议您阅读有关视图序列化的内容。这就是其中一种方法。

票数 1
EN

Stack Overflow用户

发布于 2018-04-26 09:14:17

并发控制是一个数据库管理系统(DBMS)的概念,用于解决与同时访问或更改多用户系统可能发生的数据冲突的问题。当应用于DBMS时,并发控制的目的是协调同时进行的事务,同时保持数据完整性。1并发性即将控制数据库的多用户访问

基本时间戳是一种消除死锁的并发控制机制。此方法不使用锁来控制并发性,因此不可能发生死锁。根据这种方法,每个事务都分配了一个唯一的时间戳,通常显示它何时启动。这实际上允许将年龄分配给事务并分配订单。数据项有读时间戳和写时间戳.每次读取或更新数据项时,都更新这些时间戳。

当事务试图读取由较年轻的事务写入的数据项时,此系统中会出现问题。这叫做“迟读”。这意味着数据项自初始事务启动时间以来发生了变化,解决方案是回滚时间戳并获得新的时间戳。当事务试图写入已被较年轻的事务读取的数据项时,会发生另一个问题。这叫做迟写。这意味着,自正在更改数据项的事务开始时,另一个事务已经读取了该数据项。这个问题的解决办法和后期阅读问题的解决办法是一样的。必须回滚时间戳,并获得新的时间戳。

遵循基本时间戳过程的规则,可以序列化事务,然后可以创建事务的时间安排。在具有较高事务级别的大型数据库中,时间戳可能不实用。在这种情况下,必须有大量的存储空间用于存储时间戳。

资料来源:-Control

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50038948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档