java Object wait方法详细介绍

 更新时间:2017年02月17日 14:05:49   投稿:lqh  
这篇文章主要介绍了java Object wait方法详细介绍的相关资料,需要的朋友可以参考下

java Object wait方法

当线程B访问某个共享资源时,想获取资源的锁对象,发现这个锁已经被线程A拿到了,这个时候,线程B只能被挂起,等待线程A释放锁。

但是拿到锁的线程A在执行的过程中,因为某些条件还不满足,暂时不想继续执行下去,想先等待一下(注意:是已经拿到锁的线程A自己想主动等待的),希望等到某个条件满足后,继续执行任务。在同步代码块里,线程A必须先释放锁,线程B才有资格获取锁,进入同步代码块,执行代码。等线程B执行完后,线程A需要的条件已经满足,那么这个时候必须有一个通知机制,让线程A从等待状态变成执行状态,继续执行代码。

有些同学认为线程A也可以一直循环判断,检查条件是否已经满足,而不一定要中断自己,然后等待。其实这种也是一种思路,但是呢?比较耗CPU,而且也不知道条件何时才能满足。

线程之间要协调沟通,必须有一个等待机制和通知机制,在JAVA里面,对应的就是wait方法和notify方法。

Object的wait方法

 
synchronized (obj) {
    while (condition does not ok){
      obj.wait();
    }
 }

如果想让线程A处于等待状态,可以调用当前对象wait方法。wait方法一旦被调用,也就意味着:线程A已经获得锁了,而且能做的事情都已经做了,现在只能等待了,等待另外的同步操作执行某些代码后,我才回来继续干活。

注意:

wait方法是定义在根类Object上的,Thread继承自Object类,自然也有wait方法。但是这里并不是调用当前线程对象的wait方法,而是具有锁属性的当前对象的wait方法;这一点我也不太理解,我觉得要做到线程A切换到等待状态,之后被人唤醒,就算使用线程A的wait方法和notify方法其实也是可以做到的,但是估计实现起来非常麻烦。另外从场景上看,wait定义在Object也比较合理,表示线程挂在了对象的等待池中。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java反射机制详解

    Java反射机制详解

    这篇文章主要介绍了Java反射机制,首先简单介绍了反射机制的预备知识,进一步分析了Java反射机制的原理、实现技巧与应用方法,需要的朋友可以参考下
    2015-12-12
  • 详解5种Java中常见限流算法

    详解5种Java中常见限流算法

    在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流;不但在工作中要频繁使用,而且也是面试中的高频考点。本文就为大家整理了5种Java中常见限流算法,需要的可以参考一下
    2023-04-04
  • 深入理解Spring中的循环依赖

    深入理解Spring中的循环依赖

    Spring在注入bean的时候会做循环依赖检查,下面这篇文章主要给大家介绍了关于Spring中循环依赖的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-05-05
  • Java Scala偏函数与偏应用函数超详细讲解

    Java Scala偏函数与偏应用函数超详细讲解

    Scala是一种多范式的编程语言,支持面向对象和函数式编程。Scala也支持异常处理,即在程序运行过程中发生意外或错误时,采取相应的措施
    2023-04-04
  • 玩转SpringBoot2快速整合拦截器的方法

    玩转SpringBoot2快速整合拦截器的方法

    这篇文章主要介绍了玩转SpringBoot2快速整合拦截器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • MyBatis字段名和属性名不一致的解决方法

    MyBatis字段名和属性名不一致的解决方法

    本文主要介绍了MyBatis字段名和属性名不一致的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Spring启动流程refresh()源码深入解析

    Spring启动流程refresh()源码深入解析

    这篇文章主要给大家介绍了关于Spring启动流程refresh()源码深入解析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • spring-kafka使消费者动态订阅新增的topic问题

    spring-kafka使消费者动态订阅新增的topic问题

    这篇文章主要介绍了spring-kafka使消费者动态订阅新增的topic问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • lombok注解介绍小结

    lombok注解介绍小结

    lombok是一个可以帮助我们简化java代码编写的工具类,这篇文章主要介绍了lombok注解介绍小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Java实战房屋租赁网的实现流程

    Java实战房屋租赁网的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个房屋租赁网站,大家可以在过程中查缺补漏,提升水平
    2021-11-11

最新评论