我是多线程的新手,我有一些基本问题无法得到答案。假设我有一个名为 BankTransaction 的类,我想在其中处理多线程情况。
案例 1(基于应用程序的单例)
@Singleton (Application based singleton)
class BankTransaction {
synchronized void doSomeTransaction() {
// write operation
}
}
案例 2(基于请求的单例)
@Singleton (Request based singleton)
class BankTransaction{
synchronized void doSomeTransaction() {
// write operation
}
}
请耐心等待并以通俗易懂的方式向我解释,因为我需要把事情弄清楚。
在案例 1 中,如果 1000 个用户正在使用 BankTransaction 类的同一个实例(因为它是基于应用程序的单例)并使用方法 doSomeTransaction(),这 1000 个用户中的每个用户的请求会很慢吗?因为它是同步的并且可以线程安全地工作。所以,这是不好的方法。我的理解正确吗?
在案例 2 中,如果同样的 1000 个用户正在使用 BankTransaction 类的 doSomeTransaction() 方法,每个人都将获得他们自己的 BankTransaction 类的实例,并且对他们中的任何一个来说都不会慢。但是,例如,在这 1000 个用户中,其中 2 个是密切相关的(丈夫和妻子)并且正在访问同一个银行帐户并同时执行 doSomeOperation() 方法时,我该如何处理竞争条件。我该如何处理?因为它们都有 2 个不同的类 BankTransaction 实例,并且会发生数据不一致。
撒科打诨
HUX布斯
相关分类