• notify wait Object


    notify()及notifyAll()是Object的方法,与Object的wait()方法配合使用,而且这三个方法必须在同步块中调用.  
       
      如下:  
      在线程1中执行如下代码  
      ...  
      synchronized(obj1)             //1.进入同步块  
      {  
              try   {  
              ...  
              obj1.wait();                 //2.进入暂停状态  
              }catch   (InterruptedException   exp)   {}  
      }  
       
      1.当前同步对象(monitor)为obj1,obj1是任一实例,若是同步方法,则同步对象是this.进入同步块后,obj1为锁定状态,锁定状态 对obj1本身无任何影响,而其它线程执行到同一代码时,因不能获得锁,处于Block状态,一旦解锁,被block的线程自动继续执行.  
      2.调用obj1.wait()有两个作用,一是使线程进入等待状态,二是解锁obj1,这时被block的线程将获得锁.线程1要退出等待必须要由其它线程显式的调用obj1.notify()或notifyAll()方法.  
       
      如  
       
      ...  
      synchronized(obj1)  
      {  
              ...  
              obj1.notify();         //3.   向wait的线程发通知信息  
              ...  
      }  
      ...  
       
      若其它线程执行到此时,线程1处于wait状态,则wait状态解除,解除后,若线程1若得到锁就能继续执行,若有多个线程处于obj1的wait状态,notify将随机选一个线程激活,而notifyAll是同时解除所有的wait状态.  

       

    如果在同步块入口点阻塞,不须其它线程调用notify(),调了也没效果,同步块能自动获得锁  
       
      如果是wait造成了阻塞,须用notfiy()激活,这两个方法是配合使用   

  • 相关阅读:
    django之路由层(反向解析)总结
    django 路由层(反向解析)03
    Django 文件配置、pycharm及django连接数据库、表的增删改查 总结
    Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02
    Django框架简介(1)
    编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;
    Python语法之垃圾回收机制
    前端js之BOM和DOM操作
    前端js之JQuery
    获取当前应用信息
  • 原文地址:https://www.cnblogs.com/baoguo/p/1311352.html
Copyright © 2020-2023  润新知