java线程——模拟烧水,洗茶杯与泡茶过程

在日常生活中,我们喝茶之前,必须完成完成烧开水,清洗茶杯,以及泡茶过程才能喝到清香的茶水。如果一项项的去完成的话,就会浪费很多时间。我们知道,在烧水的过程中,我们完全可以一边清洗茶杯,这样就能节约更多的时间了。那么我们如何利用程序来模拟实现这一过程呢?

public class Test{

    public static void main(String[] args) {
        MyRunnable3 myRunnable3=new MyRunnable3();
        MyRunnable4 myRunnable4=new MyRunnable4();
        Thread t1=new Thread (myRunnable3);
        Thread t2=new Thread (myRunnable4);
        t1.setName("烧水");
        t2.setName("洗杯子");
        t1.start();
        t2.start();
        try {
            t1.join();
        } catch (InterruptedException e) {
            //等待烧水完成
            e.printStackTrace();
        }
        try {
            t2.join();
        } catch (InterruptedException e) {
            // 等待洗杯子完成
            e.printStackTrace();
        }
        System.out.println("泡茶....");
    }
}
class MyRunnable3 implements Runnable{
    public void run(){
        System.out.println("烧开水去....");
        try {
            Thread.sleep(5000); //每运行一次,休眠一秒钟
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("烧完了.......");
    }
}
class MyRunnable4 implements Runnable{
    public void run(){
        for(int i=1;i<10;i++){
            System.out.println("洗 "+i+"杯子去....");
            try {
                Thread.sleep(1000); //每运行一次,休眠一秒钟
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。以下是 Java线程模拟银行取款的代码实现。 ```java public class BankAccount { private int balance; // 银行账户余额 public BankAccount(int initialBalance) { balance = initialBalance; } // 取款方法 public synchronized void withdraw(int amount) { if (balance >= amount) { System.out.println("取款成功,取出 " + amount + " 元"); balance -= amount; } else { System.out.println("余额不足,取款失败"); } } // 查询余额方法 public synchronized void checkBalance() { System.out.println("当前余额为 " + balance + " 元"); } } public class BankClient implements Runnable { private BankAccount account; public BankClient(BankAccount account) { this.account = account; } @Override public void run() { while (true) { // 模拟不定期取款 int amount = (int) (Math.random() * 1000); account.withdraw(amount); try { // 线程休眠,模拟银行服务 Thread.sleep((int) (Math.random() * 1000)); } catch (InterruptedException e) { e.printStackTrace(); } account.checkBalance(); } } } public class Main { public static void main(String[] args) { BankAccount account = new BankAccount(10000); BankClient client1 = new BankClient(account); BankClient client2 = new BankClient(account); Thread thread1 = new Thread(client1); Thread thread2 = new Thread(client2); thread1.start(); thread2.start(); } } ``` 以上代码实现了一个简单的 Java线程模拟银行取款的程序。程序中,BankAccount 类表示银行账户,包含取款和查询余额的方法。BankClient 类表示银行客户,模拟不定期地取款和查询余额的操作。Main 类是程序的入口,创建了两个 BankClient 实例,并启动了两个线程分别执行客户操作。 注意,在 BankAccount 类的取款方法和查询余额方法上都使用了 synchronized 关键字,确保了线程安全。此外,线程休眠的时间也是随机的,以模拟不同客户不定期的取款和查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值