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
   245   246   247   248   249   250   251   252   253   254   255