Rabu, 25 Juni 2014

How to Join Multiple Threads in Java - Thread Join Example




Join method from Thread class is an important method and used to impose
order on execution of multiple Threads. Concept of joining multiple threads is
very popular on  mutithreading interview question.
Here
is one of such question, “You have three threads T1, T2 and T3, How do you
ensure that they finish in order T1, T2, T3 ?. This question illustrate power
of join method on multithreaded programming. Unlike classical thread questions
like difference between wait and sleep method
or solving producer consumer problem in Java,
This o
ne is bit tricky. You can do this by using join method, by calling
T1.join() from T2 and T2.join() from T3. In this case thread T1 will finish first, followed by T2 and T3. In this Java multithreading tutorial
we will have a closer look on join method with a simple example. Idea is to
illustrate how join method works in simple words. By the way from Java 5
onwards you can also use CountDownLatch and CyclicBarrier classes to
implement scenarios like one thread is waiting for other threads to finish there
task.













When to use join method in Java




When to use Thread Join method with ExampleAs I said join is an important and useful method from Thread class but many times
overlooked. Similar to wait method, by using join
method, we can make one
Thread to wait for another. Primary use
of
Thread.join() is to wait for another thread and start execution
once that Thread has completed execution or died. Join is also a blocking method, which blocks
until thread on which join has called die or specified waiting time is over. By
the way understanding, how join method works, is not straight forward. Many
developers get confused on things like, which thread will wait,  which thread will join etc. These points will
be more clear when we go through an example
of joining multiple Thread in Java
using
join() method.





Thread Join Example  in Java



Here is a simple example of joining two threads using Thread.join() method. By
the way unlike Thread.sleep() method,
join() is not a static method, it needs to be
call on a
java.lang.Thread object. Current thread, which
calls join method will wait until thread on which join has called die or
wait at most specified millisecond for this thread to die.






/**


 * Sample Java class to illustrate How to join two threads in Java.


 * join() method allows you to serialize
processing of two threads.


 */





public class
Join {

 

    public static void
main(String args[]) throws
InterruptedException{

     

        System.out.println(Thread.currentThread().getName() + " is Started");

     

        Thread exampleThread = new Thread(){

            public
void run(){

                try {

                    System.out.println(Thread.currentThread().getName() + " is
Started"
);

                    Thread.sleep(2000);

                    System.out.println(Thread.currentThread().getName() + " is
Completed"
);

                } catch (InterruptedException ex) {

                    Logger.getLogger(Join.class.getName()).log(Level.SEVERE,
null, ex);

                }

            }

        };

     

        exampleThread.start();

        exampleThread.join();

     

        System.out.println(Thread.currentThread().getName() + " is Completed");

    }

 

}



Output:

main is Started

Thread-0 is Started

Thread-0 is Completed

main is Completed






If you look at above example, first main thread is started and
than it creates another thread, whose name is
"Thread-0" and
started it. Since
Thread-0 sleep for 2 seconds, it require at least 2 seconds to complete and in between main thread called join method on
Thread-0 object. Because of join method, now main thread will wait until
Thread-0 completes
its operation or You can say main thread will join
Thread-0. If you
look on output, it confirms this theory.





Important
point on Thread.join method


Now we know How to use join method in Java, it’s time to see some
important points about
Thread.join() method.





1. Join is a final method in java.lang.Thread class and
you cannot override it.


2) Join method throw IntrupptedException if another
thread interrupted waiting thread as a result of
join() call.





3) Join is also an overloaded method in Java,
three ve
rsion of
join() available, check javadoc for
details.





That’s all on How to join two Threads in Java with example. You
can Join multiple threads by using
Thread.join() method. Join
is particularly useful to make one thread wait for other, or serializing two
function e.g. first load your cache and than start processing request.





Related Java multithreading Tutorials from Javarevisited Blog





























Source:http://javarevisited.blogspot.com/2013/02/how-to-join-multiple-threads-in-java-example-tutorial.html

Tidak ada komentar:

Posting Komentar