zoukankan      html  css  js  c++  java
  • java----wait/notify

    解释

      wait/notify必须配合synchronized使用

    demo

    class NotifyStop2 {
        private final Object lock = new Object();
    
        public void add(String s) throws InterruptedException {
            Thread.sleep(1000);
            synchronized (lock) {
                System.out.println("add notify qian");
                //唤醒其他线程,但是其他线程不能执行,因为lock这把锁,还是被我占用的
                lock.notify();
                System.out.println("add notify hou");
                try {
                    Thread.sleep(5000);
                    System.out.println("add wait qian");
                    //释放lock锁,其他线程可以执行了【使用wait释放锁,或者方法执行完毕,也是释放锁】
                    lock.wait();
                    System.out.println("add wait hou");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
    
        }
    
        public void get() throws InterruptedException {
            synchronized (lock) {
                try {
                    System.out.println("get wait qian");
                    lock.wait();
                    System.out.println("get wait hou");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("get notify qian");
                lock.notify();
                Thread.sleep(5000);
                System.out.println("get notify hou");
            }
        }
    
        public static void main(String[] args) {
            NotifyStop2 notifyStop2 = new NotifyStop2(); //特别注意使用同一个对象进行调用
            new Thread(() -> {
                try {
                    notifyStop2.add("abc");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }, "t1").start();
            new Thread(() -> {
                try {
                    notifyStop2.get();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }, "t2").start();
        }
    }
    

      

  • 相关阅读:
    在excel实现多级联动
    发送邮件使用html模板的实现的大致思路
    设计模式的定义和分类
    yb课堂之用户登陆校验拦截器开发 《十一》
    CTF中常用的php伪协议利用
    Docker
    从零开始的Wordpress个人博客搭建
    .htaccess文件配置理解
    disable_function绕过--利用LD_PRELOAD
    信息安全实习生面试小结
  • 原文地址:https://www.cnblogs.com/yanxiaoge/p/14375169.html
Copyright © 2011-2022 走看看