@Sireesh,
Please check out the java concurrency APIs. At some point (maybe it was Java 7), there was a release of some more advanced multithreading code. There was a book by Brian Goetz called "Java Concurrency in Practice", which has a lot of good stuff about this. I saw him present at No Fluff Just Stuff one year.
Now, your particular case: I do that sort of thing a lot nowadays using an Executor (or ExecutorService). You would use the Executors class to request one of these things for your use. Then you would make Runnables (or newer Callables), and you would submit the Callables to your Executor.
When these parallel-running tasks are complete, you will have to decide whether you want some other code to proceed after they are all done, and if so, there are steps you can take. The instructions on how to do all this are
here.