线程通信,生产者消费者问题案例,模拟来电提醒和接听电话

该博客展示了如何使用Java并发编程模拟手机来电与接听的过程。通过创建两个线程,一个负责来电提醒,另一个负责接听电话,利用`synchronized`关键字和`wait()`、`notify()`方法实现线程间的同步与通信。示例中,当有来电时,程序打印提示信息,并等待接听;接听电话后,会模拟5分钟通话并更新状态。
摘要由CSDN通过智能技术生成
package com.cfqp;

public class Phone {
    private static boolean flag = false;

    public static void main(String[] args) {
        Phone huaWei = new Phone();
        huaWei.run();
    }

    //手机开机了
    public void run() {
        //来电提醒线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    while (true) {
                        synchronized (Phone.this) {
                            if (!flag) {
                                System.out.println("来电温馨提示,小朋友,有人呼叫你!");
                                flag = true;
                                Phone.this.notify();
                                Phone.this.wait();
                            }
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();

        //接听电话提
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    while(true){
                        synchronized (Phone.this){
                            if(flag){
                                System.out.println("接听电话,我用了5分钟");
                                Thread.sleep(5000);
                                flag=false;
                                Phone.this.notify();
                                Phone.this.wait();
                            }else{
                                Phone.this.notify();
                                Phone.this.wait();
                            }
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }).start();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值