File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Threads and Synchronization and the fly likes Bank account simulation Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Java » Threads and Synchronization
Bookmark "Bank account simulation" Watch "Bank account simulation" New topic
Author

Bank account simulation

Urs Waefler
Ranch Hand

Joined: Mar 13, 2007
Posts: 77
Hi

There are two persons in a bank. One person puts 1'000'000 times a certain amount of money in an account, at the same time an other person gets the same amount of money from the same account 1'000'000 times. This is my code so far:

[code=javaclass Account // Konto
{
private float balance; // Kontostand

public void setBalance(float balance)
{
this.balance = balance;
}

public float getBalance()
{
return balance;
}
}

class Bank
{
private Account[] account;

public Bank()
{
account = new Account[100];
for(int i = 0; i < account.length; i++)
{
account[i] = new Account();
}
}

public void getMoney(int accountNumber, float amount)
{
synchronized(account[accountNumber])
{
float oldBalance = account[accountNumber].getBalance();
float newBalance = oldBalance - amount;
account[accountNumber].setBalance(newBalance);
}
}

public void putMoney(int accountNumber, float amount)
{
synchronized(account[accountNumber])
{
float oldBalance = account[accountNumber].getBalance();
float newBalance = oldBalance + amount;
account[accountNumber].setBalance(newBalance);
}
}
}


class Clerk extends Thread
{
private Bank bank;

public Clerk(String name, Bank bank)
{
super(name);
this.bank = bank;
start();
}

public void run()
{
for(int i = 0; i < 1000000; i++)
{
/*
* set account number
*/
int accountNumber = 0;

/*
* set transfer amount
*/
float amount = 100;

bank.putMoney(accountNumber, amount);
bank.getMoney(accountNumber, amount);
}
}
}

public class Banking
{
public static void main(String[] args)
{
Bank myBank = new Bank();
Clerk Andrea = new Clerk("Andrea", myBank);
Clerk Petra = new Clerk("Petra", myBank);

}
}][/code]

Everything is fine so far, the code compiles. But I do not have any idea at the moment, how to continue. Who can help me?

Regards, Urs


SCJP 1.4
Alistair J MacDonald
Greenhorn

Joined: Jul 15, 2011
Posts: 8
There appears to be a lot of code missing from the code you have provided.
Urs Waefler
Ranch Hand

Joined: Mar 13, 2007
Posts: 77
Is this a help? I continued, actually I am in the middle of the development.
Alistair J MacDonald
Greenhorn

Joined: Jul 15, 2011
Posts: 8
I could help, but if you are in the middle of development I guess you are not stuck.
John Vorwald
Ranch Hand

Joined: Sep 26, 2010
Posts: 139
Try semaphore with consumer / producer....
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Bank account simulation
 
Similar Threads
Thread question
Banking with Threads
How to get a transfer function to work both ways?
java.lang.IllegalThreadStateException
Program like ATM where person enters amount in dollars and cents but program uses int for monies