• Java多线程通信之wait()和notify()方法


    1.wait()方法和sleep()方法:

    wait()方法在等待中释放锁;sleep()在等待的时候不会释放锁,抱着锁睡眠。

    2.notify():

    随机唤醒一个线程,将等待队列中的一个等待线程从等待队列中移到同步队列中。

    public class Demo_Print {
        public static void main(String[] args) {
            Print p = new Print();
            new Thread() {
                public void run() {
                    while (true) {
                        p.print1();
                    }
                };
            }.start();
    
            new Thread() {
                public void run() {
                    while (true) {
                        p.print2();
                    }
                };
            }.start();
        }
    }
    
    class Print {
        int flag = 1;
    
        public synchronized void print1() {
            if (flag != 1) {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.print("你");
            System.out.print("好");
            System.out.print("吗????????????");
            System.out.println();
    
            flag = 2;
            this.notify();
        }
    
        public synchronized void print2() {
            if (flag != 2) {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            System.out.print("我");
            System.out.print("好");
            System.out.println();
    
            flag = 1;
            this.notify();
        }
    }

    在该案例中,实现一问一答的线程同步通信。当方法中开启了wait()方法后,通过改变flag的值来唤醒线程进而实行另一个方法。

  • 相关阅读:
    制造者为什么重要
    归因理论
    初创业谨记有三法宝:顶梁柱、现金牛、北极星
    华特迪士尼语录
    说好一个创业故事的5个步骤
    接口
    抽象类_模板方法设计模式
    抽象类与抽象方法
    非static和static初始化块
    单例设计模式
  • 原文地址:https://www.cnblogs.com/springa/p/12631483.html
Copyright © 2020-2023  润新知