2017-02-04 81 views
-3

我对Java的多线程一个疑问。假设我有一个银行application.let我们说我有一个像下面的控制器。的Java多线程的银行应用程序

public class BankAccount{ 

private String bankaccount; 

private long balance; 

getBalance(String bankaccount){ 

//code to get balance based on bankaccount number 

this.balance=value; //value is the balance i get from database 

} 

updateAccount(long value){ 

balance=balance-value; 

//code to store balance in database 
} 

让我们说,我已经使用上面的代码在Spring应用程序 我有一种情况:针对一个特定的帐号余额10000.A丈夫和妻子都试图从同一个账户,从退出金额2台不同的自动柜员机由于服务器在内部使用多线程,因此上述场景需要同步。我有以下怀疑

1)将上述2个请求创建BankAccount类的2个不同的对象或只有一个对象。

2)如果它创建仅1个对象服务器如何识别一个不同的帐号,并创建另一个目的是它作为更新一个帐户号码不应该阻止更新某些其他帐户号码。

+2

字的智慧:不要跑,你可以走了。 –

+0

我是很新的多线程。每个人都有自己的时间表来学习。任何形式的帮助,这里理解,不批评.. –

+0

没有人会在这里给大家讲课。在网络上有很多关于这个主题的资料,所以你的功课首先要回来,然后回来确切的问题。 –

回答

0
  1. 实施一个解决方案,其中每个帐号只创建一个BankAccount实例是有意义的。

  2. 您可以使用​​关键字分别同步对每个BankAccount实例的访问。例如:

    BankAccount account = new BankAccount("1234567890"); 
    synchronized (account) { 
        //perform a transaction here 
        account.updateAccount(100); 
    } 
    

    这种方式,只有一个线程可以进入同步块,同时其他线程将阻塞,直到第一线程存在该块。