JAVA SP T


Lets dive into snapshot of my programs!💻

7.Write a Java program that creates a bank account with concurrent deposits and withdrawals using threads

💡Code:

 class program7 {
                private double balance;
                
                public program7(double initialBalance) {
                this.balance = initialBalance;
                }
                
                public synchronized void deposit(double amount) {
                System.out.println("Depositing: " + amount);
                balance += amount;
                System.out.println("New Balance after deposit: " + balance);
                }
                
                public synchronized void withdraw(double amount) {
                if (balance >= amount) {
                System.out.println("Withdrawing: " + amount);
                balance -= amount;
                System.out.println("New Balance after withdrawal: " + balance);
                } else {
                System.out.println("Insufficient balance for withdrawal.");
                }
                }
                
                public static void main(String[] args) {
                program7 account = new program7(1000); // Starting balance
                
                // Create multiple threads for deposits and withdrawals
                Thread depositThread = new Thread(new DepositTask(account));
                Thread withdrawThread = new Thread(new WithdrawTask(account));
                
                depositThread.start();
                withdrawThread.start();
                }
                }
                
                class DepositTask implements Runnable {
                private final program7 account;
                
                public DepositTask(program7 account) {
                this.account = account;
                }
                
                public void run() {
                for (int i = 0; i < 5; i++) {
                account.deposit(100);
                try {
                Thread.sleep(100); // Adding a delay for demonstration purposes
                } catch (InterruptedException e) {
                e.printStackTrace();
                }
                }
                }
                }
                
                class WithdrawTask implements Runnable {
                private final program7 account;
                
                public WithdrawTask(program7 account) {
                this.account = account;
                }
                
                public void run() {
                for (int i = 0; i < 5; i++) {
                account.withdraw(150);
                try {
                Thread.sleep(100); // Adding a delay for demonstration purposes
                } catch (InterruptedException e) {
                e.printStackTrace();
                }
                }
                }
                } 

📸Output :

output