GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing www.tutorialspoint.com — Java - Joining Threads
Selected Reading
Java - Joining ThreadsOnce a Thread object is created, you can start it by calling start() method, which executes a call to run() method. With multiple threads running, we can block current thread until another thread terminates. Joining Threads in JavaJoining threads in Java refers for waiting (or, blocking) a thread until another thread finishes its execution. The join() method of the Thread class is used for this purpose. SyntaxFollowing is a simple syntax of join() method − void join(); Overloaded Thread.join() MethodsThe following are the three overloaded join() method -
Example of Joining Threads in JavaIn this example, we're creating a class RunnableDemo by implementing Runnable interface. RunnableDemo class has run() method implementation. In main class TestThread, we've created the RunnableDemo objects and using those objects we've created two Thread objects. When Thread.start() method is called on each thread objects, threads start processing and program is executed. Using join() method, we're blocking the current thread which ensure that once thread is complete then only next thread will start. package com.tutorialspoint;
class RunnableDemo implements Runnable {
RunnableDemo( ) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i);
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
}
}
public class TestThread {
public static void main(String args[]) throws InterruptedException {
Thread t1 = new Thread( new RunnableDemo(), "Thread-1");
Thread t2 = new Thread( new RunnableDemo(), "Thread-2");
Thread t3 = new Thread( new RunnableDemo(), "Thread-3");
// start t1 thread and join main thread
t1.start();
t1.join();
// t2 will start when t1 is dead
t2.start();
t2.join();
// t3 will start when t2 is dead
t3.start();
}
}
OutputThread: Thread-1, State: New Thread: Thread-2, State: New Thread: Thread-1, State: Running Thread: Thread-1, 4 Thread: Thread-1, 3 Thread: Thread-1, 2 Thread: Thread-1, 1 Thread: Thread-1, State: Dead Thread: Thread-2, State: Running Thread: Thread-2, 4 Thread: Thread-2, 3 Thread: Thread-2, 2 Thread: Thread-2, 1 Thread: Thread-2, State: Dead More Example of Joining Threads in JavaExample 1In this example, we're creating a class RunnableDemo by implementing Runnable interface. RunnableDemo class has run() method implementation. In main class TestThread, we've created the RunnableDemo objects and using those objects we've created two Thread objects. When Thread.start() method is called on each thread objects, threads start processing and program is executed. Using join(long millisec) method, we're blocking the current thread for 200 millisecs which ensure that once thread is complete or a delay of 200 ms occurred then only next thread will start. package com.tutorialspoint;
class RunnableDemo implements Runnable {
RunnableDemo( ) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i);
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
}
}
public class TestThread {
public static void main(String args[]) throws InterruptedException {
Thread t1 = new Thread( new RunnableDemo(), "Thread-1");
Thread t2 = new Thread( new RunnableDemo(), "Thread-2");
Thread t3 = new Thread( new RunnableDemo(), "Thread-3");
// start t1 thread and join main thread
t1.start();
t1.join(200);
// t2 will start when t1 is dead or 200 ms is elapsed
t2.start();
t2.join(200);
// t3 will start when t2 is dead or 200 ms is elapsed
t3.start();
}
}
OutputThread: main, State: New Thread: main, State: New Thread: main, State: New Thread: Thread-1, State: Running Thread: Thread-1, 4 Thread: Thread-1, 3 Thread: Thread-1, 2 Thread: Thread-2, State: Running Thread: Thread-1, 1 Thread: Thread-1, State: Dead Thread: Thread-2, 4 Thread: Thread-2, 3 Thread: Thread-2, 2 Thread: Thread-3, State: Running Thread: Thread-2, 1 Thread: Thread-2, State: Dead Thread: Thread-3, 4 Thread: Thread-3, 3 Thread: Thread-3, 2 Thread: Thread-3, 1 Thread: Thread-3, State: Dead Example 2In this example, we're creating a class RunnableDemo by implementing Runnable interface. RunnableDemo class has run() method implementation. In main class TestThread, we've created the RunnableDemo objects and using those objects we've created two Thread objects. When Thread.start() method is called on each thread objects, threads start processing and program is executed. Using join(long millisec, long nanoseconds) method, we're blocking the current thread for 200 millisecs and 100000 nanosecs which ensure that once thread is complete or a delay of 201 ms occurred then only next thread will start. package com.tutorialspoint;
class RunnableDemo implements Runnable {
RunnableDemo( ) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
try {
Thread.sleep(49);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i);
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
}
}
public class TestThread {
public static void main(String args[]) throws InterruptedException {
Thread t1 = new Thread( new RunnableDemo(), "Thread-1");
Thread t2 = new Thread( new RunnableDemo(), "Thread-2");
Thread t3 = new Thread( new RunnableDemo(), "Thread-3");
// start t1 thread and join main thread
t1.start();
t1.join(200,100000);
// t2 will start when t1 is dead or 201 ms is elapsed
t2.start();
t2.join(200,100000);
// t3 will start when t2 is dead or 201 ms is elapsed
t3.start();
}
}
OutputThread: main, State: New Thread: main, State: New Thread: main, State: New Thread: Thread-1, State: Running Thread: Thread-1, 4 Thread: Thread-1, 3 Thread: Thread-1, 2 Thread: Thread-1, 1 Thread: Thread-1, State: Dead Thread: Thread-2, State: Running Thread: Thread-2, 4 Thread: Thread-2, 3 Thread: Thread-2, 2 Thread: Thread-2, 1 Thread: Thread-2, State: Dead Thread: Thread-3, State: Running Thread: Thread-3, 4 Thread: Thread-3, 3 Thread: Thread-3, 2 Thread: Thread-3, 1 Thread: Thread-3, State: Dead Advertisements
|
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |