假设客户有一张信用卡。他的余额是 x 元,他正在购买价值为 y 的商品(yx 但 z现在我将在 Java 中模拟这种情况。如果所有交易都是顺序进行的,则无需恐慌。客户可以购买价值为 y 的商品,然后他没有足够的信用来购买其他商品。
但是,当我们进入多线程环境时,我们必须处理一些锁定机制或策略。因为如果另一个线程在先前线程反映更改之前读取信用卡对象,则会出现严重问题。
据我所知,一种方法是我们可以保留原始余额的副本,并在更新余额之前检查当前值。如果该值与原始值相同,则我们可以确保其他线程不会更改余额。如果余额不同,则必须撤销计算。
Java 同步也是一个很好的解决方案。现在我的问题是,在这种情况下实施最佳方法是什么?
此外,如果我们要从宏观角度看待这个问题。同步会影响系统的性能。由于它锁定了对象,其他线程必须等待。
但是,当我们进入多线程环境时,我们必须处理一些锁定机制或策略。因为如果另一个线程在先前线程反映更改之前读取信用卡对象,则会出现严重问题。
据我所知,一种方法是我们可以保留原始余额的副本,并在更新余额之前检查当前值。如果该值与原始值相同,则我们可以确保其他线程不会更改余额。如果余额不同,则必须撤销计算。
Java 同步也是一个很好的解决方案。现在我的问题是,在这种情况下实施最佳方法是什么?
此外,如果我们要从宏观角度看待这个问题。同步会影响系统的性能。由于它锁定了对象,其他线程必须等待。
synchronized
吗? - Rahul Bobhate