我正在制作一个带有应用程序逻辑线程和数据库访问线程的 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/