java - 如何让 Java 线程等待另一个线程的输出?

标签 java multithreading

我正在制作一个带有应用程序逻辑线程和数据库访问线程的 Java 应用程序。 它们都在应用程序的整个生命周期中持续存在,并且都需要同时运行(一个与服务器对话,一个与用户对话;当应用程序完全启动时,我需要 两者 他们工作)。

但是,在启动时,我需要确保最初应用程序线程一直等待,直到 db 线程准备好(当前通过轮询自定义方法 dbthread.isReady() 来确定)。 我不介意应用程序线程在数据库线程准备好之前阻塞。

Thread.join() 看起来不像是解决方案 - db 线程仅在应用关闭时退出。

while (!dbthread.isReady()) {} 有点工作,但空循环消耗大量处理器周期。

还有其他想法吗?谢谢。

最佳答案

使用 CountDownLatch计数器为 1。

CountDownLatch latch = new CountDownLatch(1);

现在在应用线程做-

latch.await();

在db线程中,完成后,做-

latch.countDown();

关于java - 如何让 Java 线程等待另一个线程的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/289434/

相关文章:

java - 在android中捕获图像时出现管道错误

java - 为什么将 volatile 与同步块(synchronized block)一起使用?

c++ - 在运行循环外声明、分配和释放线程局部指针变量

java - 从 sbt shell 中设置环境变量

java - 如何在 JFrame 上对 ImageIcon 进行动画处理,图像将加载但不会更改

java - 我可以将 Java 中的日期作为 TYPED INTO excel 单元格获取吗?

java - Java中如何判断一个线程是否是主线程?

python - Scrapy 是单线程还是多线程?

java - Android - 同步线程与onSensorChanged发送udp数据包

java - 在 Jetty 测试中重用 ServletContainerInitializer