[Head First Java] -Problema de datos de intercambio de hilos

Referencia-P507

1. Descripción

  1. Dos subprocesos comparten los mismos datos. Cada vez que utilice datos, primero debe determinar si están dentro de un rango razonable.
  2. Utilice la Thread.sleepfunción para bloquear el hilo cada vez que se utilizan los datos

2. Código

class BankAccount {
    
    
    private int balance = 100;

    public int getBalance() {
    
    
        return balance;
    }

    public void withdraw(int amount) {
    
    
        balance = balance - amount;
    }
}

public class RyanAndMonicaJob implements Runnable {
    
    
    private BankAccount account = new BankAccount();

    public static void main (String[] args) {
    
    
        RyanAndMonicaJob theJob = new RyanAndMonicaJob();
        Thread one = new Thread(theJob);
        Thread two = new Thread(theJob);
        one.setName("Ryan");
        two.setName("Monica");
        one.start();
        two.start();
    }

    public void run() {
    
    
        for (int x = 0; x < 10; x++) {
    
    
            makeWithdrawal(10);
            if(account.getBalance() < 0) {
    
    
                System.out.println("Overdrawn!");
            }
        }
    }

    private void makeWithdrawal(int amount) {
    
    
        String currentThread = Thread.currentThread().getName();
        if(account.getBalance() >= amount) {
    
    
            System.out.println(currentThread + "is about to withdraw");
            try{
    
    
                System.out.println(currentThread + " is going to sleep");
                Thread.sleep(500);
            } catch(InterruptedException ex) {
    
    
                ex.printStackTrace();
            }
            System.out.println(currentThread + " woke up.");
            account.withdraw(amount);
            System.out.println(currentThread + " completes the withdrawl");
        } else {
    
    
            System.out.println("Sorry, not enough for " + currentThread);
        }
    }
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/20201113004828229.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3BpYW5vOTQyNQ==,size_16,color_FFFFFF,t_70#pic_center)

Supongo que te gusta

Origin blog.csdn.net/piano9425/article/details/109665286
Recomendado
Clasificación