I'm making a Java application with an application-logic-thread and a database-access-thread. Both of them persist for the entire lifetime of the application and both need to be running at the same time (one talks to the server, one talks to the user; when the app is fully started, I need both of them to work).
However, on startup, I need to make sure that initially the app thread waits until the db thread is ready (currently determined by polling a custom method dbthread.isReady()
).
I wouldn't mind if app thread blocks until the db thread was ready.
Thread.join()
doesn't look like a solution - the db thread only exits at app shutdown.
while (!dbthread.isReady()) {}
kind of works, but the empty loop consumes a lot of processor cycles.
Any other ideas? Thanks.
Since
join()
has been ruled outYou can consider other alternatives:
invokeAll from
ExecutorService
ForkJoinPool or newWorkStealingPool from
Executors
( since Java 8 release)