Page 245 - 6571
P. 245

до них із різних потоків. У наступному прикладі програми іміту-
            ється робота банку з декількома рахунками. Згенеруємо випадко-
            вим чином декілька транзакції, що переводять гроші з одного ра-
            хунку на інший. Кожна транзакція переміщає довільну суму гро-

            шей  з  рахунку,  що  обслуговується  поточним  потоком,  на  іншій
            довільно обираний рахунок.
                  У коді, що імітує роботу банку визначено клас Bank та опи-

            сано  метод  transfer().  Даний  метод  переміщує  деяку  суму
            грошей  з  одного  рахунку  на  інший.  Нижче  наведено  можливий

            код методу transfer() з класу Bank.

                  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");
                  }

                  Перевід грошей з фіксованого банківського рахунку викону-

            ється  у  методі  run()  із  класу  TransferThread.  Для  цього  з
            метою  виконання  транзакції  у  методі  run()  із  об’єкта  класу
            Bank викликається метод transfer().


                  public void run() {
                     for (int i=0; i<100; i++) {
                        try {
                           bank.transfer();
                        } catch (InterruptedException e) {
                           e.printStackTrace();
                        }
                     }
                  }




                                                        244
   240   241   242   243   244   245   246   247   248   249   250