Java 阻止给定对象上的所有线程

Java 阻止给定对象上的所有线程,java,concurrency,Java,Concurrency,我需要为我正在处理的当前项目编写一个锁,当连接失败时,调用给定方法的所有线程都应该挂起,直到重新建立连接 如何在Java中再次执行此操作?我已经有一段时间没有处理这个问题了。在重新建立连接之前,您不能不从该方法返回吗?实际实现将取决于此方法以及如何管理此连接。您可以对一个对象执行wait(),当负责重新连接的另一个线程重新建立连接时,调用notify()取消阻止该方法。这样,调用该方法的任何内容都将被阻止,因为该方法在连接关闭时不会返回。您可以使用wait()和notifyAll()方法: 使当

我需要为我正在处理的当前项目编写一个锁,当连接失败时,调用给定方法的所有线程都应该挂起,直到重新建立连接


如何在Java中再次执行此操作?我已经有一段时间没有处理这个问题了。

在重新建立连接之前,您不能不从该方法返回吗?实际实现将取决于此方法以及如何管理此连接。您可以对一个对象执行
wait()
,当负责重新连接的另一个线程重新建立连接时,调用
notify()
取消阻止该方法。这样,调用该方法的任何内容都将被阻止,因为该方法在连接关闭时不会返回。

您可以使用wait()和notifyAll()方法:

使当前线程等待,直到另一个线程调用 此对象的notify()方法或notifyAll()方法,或 指定的时间已过

唤醒在此对象监视器上等待的所有线程。A. 线程通过调用一个wait命令在对象的监视器上等待 方法

然而,这绝不是唯一的解决方案。在方法内部还有其他方法可以等待。这种情况类似于:

while (!conn.isConnected) condition.await()
当然,除了这个伪代码之外,还有很多东西

你也可能想读一下所谓的。这是一个冗长的话题,但它的目标是管理可能失败的集成点,比如连接到数据库

 public final void notifyAll()
while (!conn.isConnected) condition.await()