Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

using join() on multiple threads.

 
Carlton Hanna
Greenhorn
Posts: 6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm wondering, if I have multiple worker threads and want the created thread to wait for them all to finish. Would this be the right way to do it:

 
Paul Clapham
Sheriff
Posts: 21312
32
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes.

Although in a real program you would more likely write a loop to join all of the threads, rather than an unrolled loop.
 
Abimaran Kugathasan
Ranch Hand
Posts: 2066
Clojure IntelliJ IDE Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Carlton Hanna wrote:I'm wondering, if I have multiple worker threads and want the created thread to wait for them all to finish. Would this be the right way to do it:



You mean to say that created Thread is Main Thread, and should it wait for the worker thread to finished their jobs.
 
Isuru Sampath
Ranch Hand
Posts: 57
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Won't this do rather than looping again to join the threads again???

 
Mike Simmons
Ranch Hand
Posts: 3090
14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Isuru: no. That would completely neutralize the point of using multiple threads. Every time you start a new thread, you wait until it completes, doing nothing else until it completes. In that case, you might as well do all the work in one thread - all benefits of using multiple threads have been lost.
 
Steven Rodeo
Ranch Hand
Posts: 72
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

You can use either a CyclicBarrier or a CountDownLatch. Its an elegant way for the main thread to wait for its worker threads to finish. Again it depends on your code wether you need to use a CyclicBarrier or a CountDownLatch.

_SM

 
Isuru Sampath
Ranch Hand
Posts: 57
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Mike,

Thanks a lot for your explanation. Saved me from lots of trouble. Now I get it. The moment I call the join() method my calling thread will start waiting untill the spawned thread completes.
 
Isuru Sampath
Ranch Hand
Posts: 57
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Steven,

Thanks for your suggestion. CountDownLatch is what I need. Thanks again.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic