在java中,每个对象都有两个池,锁(monitor)池和等待池

wait() ,notifyAll(),notify() 三个方法都是Object类中的方法.

锁池:假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。

等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁(因为wait()方法必须出现在synchronized中,这样自然在执行wait()方法之前线程A就已经拥有了该对象的锁),同时线程A就进入到了该对象的等待池中。如果另外的一个线程调用了相同对象的notifyAll()方法,那么处于该对象的等待池中的线程就会全部进入该对象的锁池中,准备争夺锁的拥有权。如果另外的一个线程调用了相同对象的notify()方法,那么仅仅有一个处于该对象的等待池中的线程(随机)会进入该对象的锁池.

java加锁等待_java中的锁池和等待池相关推荐

  1. java 锁定界面_Java中的锁

    java中的锁遵循不同的分类方法,太多了,乐观锁/悲观锁,可重入锁/不可重入锁,有些第一遇到的话,可能还有点懵.刚好周末有时间学习下,总结和梳理下. 一总述 总的来说对java的锁有以下七种分类方法: ...

  2. Java与C语言中的锁

    Java与C语言中的锁 C 嵌入式汇编的语法格式是: asm(code : output operand list : input operand list : clobber list) __asm ...

  3. java sleep唤醒_Java中的等待唤醒机制—至少50%的工程师还没掌握!

    Java中的等待唤醒机制-至少50%的工程师还没掌握! 发布时间:2019-12-14 01:53, 浏览次数:222 , 标签: Java 这是一篇走心的填坑笔记,自学Java的几年总是在不断学习新 ...

  4. java中乐观锁_Java中乐观锁与悲观锁的实现

    锁(locking) 业务逻辑的实现过程中,往往需要保证数据访问的排他性.如在金融系统的日终结算 处理中,我们希望针对某个cut-off时间点的数据进行处理,而不希望在结算进行过程中 (可能是几秒种, ...

  5. java 添加等待时间_Java中线程等待特定时间的最有效方法 - java

    我知道这个问题here,但是我有一个稍微不同的问题.如果我希望自己通过各种Thread方法(而不是通过实用程序类或Quartz)手动编码某个线程在特定时间的运行,那么最有效(就开销而言)进行编码. 我 ...

  6. java future用法_Java中的多线程知识点

    如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...

  7. ipa去除时间锁_Java中的锁以及sychronized实现机制(十)

    上节讲了线程安全和原子性,其实就是并发代码变成同步,意味着代码只有一个人在使用,这样就不会有问题. (一)Java中的锁 1.自旋锁 为了不放弃CPU执行时间,循环的使用CAS技术对数据尝试进行更新, ...

  8. java thread join()_Java中Thread.join()的使用方法

    概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...

  9. java同步队列_Java 中队列同步器 AQS(AbstractQueuedSynchronizer)实现原理

    前言 在 Java 中通过锁来控制多个线程对共享资源的访问,使用 Java 编程语言开发的朋友都知道,可以通过 synchronized 关键字来实现锁的功能,它可以隐式的获取锁,也就是说我们使用该关 ...

最新文章

  1. TCP 、UDP各自的优缺点
  2. 香蕉派路由功Openwrt、Android功耗对照測试
  3. CentOS 6 安装Hadoop 2.6 (四)运行简单例子
  4. Java Code之多态
  5. 工作197:判断对象里面是否有0和1
  6. ORA-29807: specified operator does not exist
  7. jdk源码——HashMap
  8. glog 编译报错 ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h.
  9. ENVI Classic 二次开发简介
  10. Python 字符串前面加b,u,r的含义
  11. linux uwf开放80端口,IPv4/IPv6 双栈网络测试 - 知识图谱理解环境变量 JAVA_TOOL_OPTIONS_purple尘的专栏-CSDN博客...
  12. 自动化 夏令营 保研
  13. 大工《电机与拖动实验》实验报告离线作业
  14. 三维立体坐标系 html5,三维坐标系
  15. 查征信 查婚姻状况 查公开的个人信息 学信网学历学位查询 中国执行信息公开网执行人查询 民办院校学位学历查询 国外学历学位查询方法 征信中心 中国裁判文书查询 查询全国的莆田系医院 企查查 天眼查
  16. xyz坐标转换ybc_GNSS仰角和方位角的计算及代码,XYZ转BLH坐标的代码及原理
  17. Dex.top社区绿皮书 (试运行)
  18. Spring Bean装配以及依赖注入
  19. kafka_2.11 简单使用
  20. JavaScript实现动态添加的元素添加点击事件

热门文章

  1. Crescendo for Mac(音乐记谱软件)
  2. 短视频与文字自媒体之争
  3. 支付宝单笔查询接口需要人工开通【坑爹】
  4. Java8 Stream 语法详解 用法实例
  5. 本原勾股数组(数论日常1)
  6. Coverity 代码静态安全检测
  7. 设计模式沉思录读后感
  8. experiment : VerifyFileSignatureBuildIn
  9. C#中ShowDialog() == DialogResult.OK
  10. Vue之 $set的使用