zoukankan      html  css  js  c++  java
  • 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的值来唤醒线程进而实行另一个方法。

  • 相关阅读:
    params
    robotframework+jenkins分布式执行自动化测试用例
    python文件读写
    Robot Framework资料
    RobotFramework环境搭建
    Django评论系统
    Django集成TinyMCE(admin后台+前台)
    个人博客模块分析
    Django实战,小网站实现增删改查
    docker入门【1】
  • 原文地址:https://www.cnblogs.com/springa/p/12631483.html
Copyright © 2011-2022 走看看