Hallo zusammen
Ich habe eine Aufgabe zu lösen, und zwar soll ich mittels Thread eine Simulation bauen die folgendes macht:
Eine Person zahlt auf ein Konto 1Mio Mal einen Betrag ein, und eine andere Person hebt gleichzeitig einen anderen Betrag ebenfalls 1Mio Mal ab.
Bis jetzut habe Ich folgendes realisiert:
Ich finde hier keinen Fehler, es ist aber ganz sicher einer da, denn die Ausgabe stimmt nicht.
Wer kann weiterhelfen?
Danke
Ich habe eine Aufgabe zu lösen, und zwar soll ich mittels Thread eine Simulation bauen die folgendes macht:
Eine Person zahlt auf ein Konto 1Mio Mal einen Betrag ein, und eine andere Person hebt gleichzeitig einen anderen Betrag ebenfalls 1Mio Mal ab.
Bis jetzut habe Ich folgendes realisiert:
Java:
public class Bank{
public static void main (String[] args) {
Account k = new Account();
Person p1 = new Person(k,458);
Person p2 = new Person(k,-99);
p1.start();
p2.start();
try{
p1.join();
}
catch(InterruptedException e)
{
System.out.println("Thread Person 1 was interrupted");
}
try{
p2.join();
}
catch(InterruptedException e)
{
System.out.println("Thread Person 2 was interrupted");
}
System.out.println("Schlussaldo: "+ k.getSaldo());
}
}
Java:
public class Person extends Thread {
Account konto;
private int betrag;
public Person(Account k, int zahl) {
this.konto = k;
this.betrag = zahl;
}
public synchronized void run()
{
for(int i = 0; i <=1000000; i++)
{
konto.transfer(konto,betrag);
try {
Thread.sleep((int)Math.random()*100);
}
catch(InterruptedException e) {
}
}
}
}
Java:
public class Account{
Account konto;
private int saldo;
public synchronized void transfer(Account konto, int n)
{
this.konto = konto;
if (n > 0){
konto.saldo += n;
}
else{
konto.saldo -=n;
}
}
public synchronized int getSaldo()
{
return saldo;
}
}
Ich finde hier keinen Fehler, es ist aber ganz sicher einer da, denn die Ausgabe stimmt nicht.
Wer kann weiterhelfen?
Danke