Page 250 - 6571
P. 250
4. Виправити результати роботи поданої нижче програми ви-
користавши для цього наступні можливі рішення:
- клас ReentrantLock, який реалізує інтерфейс Lock;
- модифікатор synchronized під час оголошення мето-
ду;
- блок synchronized у тілі методу.
5. У звіті до лабораторної роботи представити знімки робочої
програми.
6. Оформити звіт та зробити висновки по роботі.
3.3 Код імітації роботи банку з декількома рахунками
Лістинг 3.1 – Програмна реалізація класу Bank
public class Bank {
private int account1, account2;
public Bank(int acc1, int acc2) {
account1 = acc1;
account2 = acc2;
}
public void transfer() throws InterruptedException {
int amount = (int)(Math.random()*500);
if(account1 > amount) {
account1 = account1 - amount;
Thread.sleep(2000);
account2 = account2 + amount;
} else {
account1 = account1 + amount;
Thread.sleep(2000);
account2 = account2 - amount;
}
System.out.println("Account #1: " + account1 +
"\t" +
"Account #2: " + account2 + "\t" +
"Total balance: " + totalBalance() + "\t");
}
protected int totalBalance() {
return account1 + account2;
}
}
249