Java 实现阻塞一个方法,直到调用另一个方法为止

Java 实现阻塞一个方法,直到调用另一个方法为止,java,multithreading,concurrency,Java,Multithreading,Concurrency,因此,我们有一个类,如下所示: public static class BlockMethodtillAnotherCalled { public void doOnce() { } public void blockUntilCall() { } } 我们希望实现所有调用blockUntilCall()的线程都被阻塞,直到调用doOnce()为止 举例如下: public static class BlockMethod

因此,我们有一个类,如下所示:

public static class BlockMethodtillAnotherCalled {
    
    public void doOnce() {
        
    }
    
    public void blockUntilCall() {

    }
}
我们希望实现所有调用blockUntilCall()的线程都被阻塞,直到调用doOnce()为止

举例如下:

public static class BlockMethodtillAnotherCalled {
    
    public void doOnce() {
        
    }
    
    public void blockUntilCall() {

    }
}
T1.blockUntilCall->打印输出“…现在是块”

T2.blockUntilCall->打印输出“…现在是块”

杜恩斯

T1.blockUntilCall->打印输出“…现已发布”


T2.blockUntilCall->print out“…现在发布”

您应该检查软件包的说明,特别是名为“同步器”的部分

同步器

五个类帮助实现常见的专用同步习惯用法

  • 是一个经典的并发工具
  • 是一个非常简单但非常常见的实用程序,用于阻塞,直到给定数量的信号、事件或条件保持
  • A是一个可重置的多路同步点,在某些类型的并行编程中很有用
  • 提供了一种更灵活的屏障形式,可用于控制多线程之间的分阶段计算
  • 允许两个线程在集合点交换对象,在多个管道设计中非常有用
在这种情况下,a是一个完美的匹配,使用从1开始的倒计时

使用给定的计数初始化
countdownlock
。由于方法的调用,这些方法会一直阻塞,直到当前计数达到零,然后释放所有等待的线程,并立即执行任何后续的返回调用。这是一种一次性现象——无法重置计数。如果需要重置计数的版本,请考虑使用.< /P> 下面是的javadoc中的示例代码的缩小版本,适用于问题中的代码:

未调用公共静态类阻止方法{
专用倒计时闩锁启动信号=新倒计时闩锁(1);
公开作废{
this.startSignal.countDown();//让所有线程继续
}
公共无效块untlcall(){
试一试{
this.startSignal.await();
}捕获(中断异常例外){
//在没有启动信号的情况下继续
}
}
}

到目前为止,您尝试了什么?你有什么想法?你做了什么研究?刚刚试过。非常感谢你。