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(); } }
线程通信,生产者消费者问题案例,模拟来电提醒和接听电话
最新推荐文章于 2024-11-04 22:26:34 发布
该博客展示了如何使用Java并发编程模拟手机来电与接听的过程。通过创建两个线程,一个负责来电提醒,另一个负责接听电话,利用`synchronized`关键字和`wait()`、`notify()`方法实现线程间的同步与通信。示例中,当有来电时,程序打印提示信息,并等待接听;接听电话后,会模拟5分钟通话并更新状态。
摘要由CSDN通过智能技术生成