java如何使用对象中等待的方法

  

java如何使用对象中等待的方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强> java对象等方法

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

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

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

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

<强>对象的等待方法

同步(obj) {
  而(条件并不好){
  obj.wait ();
  }
  }

如果想让线程一处于等待状态,可以调用当前对象等方法.wait方法一旦被调用,也就意味着:

<强>注意:

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

关于java如何使用对象中等待的方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

java如何使用对象中等待的方法