As we all know in multi threading we cant guarantee the order of execution of threads .So in this example i will show you how to make sure one method calls after another.
To implement this we are going to use JOIN() concept of multi threading.
Join() : The join method allows one thread to wait for the completion of another.
if t1 is a Thread object whose thread is currently executing.
t1.join(); causes the current thread to pause execution until t1 thread terminates.
So to execute main thread before child thread it should call join method on main thread and hence child thread has to wait until competing of main thread.
To implement this we are going to use JOIN() concept of multi threading.
Join() : The join method allows one thread to wait for the completion of another.
MyThread1 t1 = new MyThread1();
if t1 is a Thread object whose thread is currently executing.
t1.join(); causes the current thread to pause execution until t1 thread terminates.
So to execute main thread before child thread it should call join method on main thread and hence child thread has to wait until competing of main thread.
Ruuner class:
package com.thread; public class ThreadRun { //Main Thread public static void main(String args[]) { //Main thread reference MyThread1.mainThread= Thread.currentThread();
//Thread T-1 MyThread1 t1 = new MyThread1(); t1.setName("t1"); t1.start(); //Main thread logic for (int i = 0; i < 5; i++) { System.out.println("Main Thread"); } } }
Child Thread class:
package com.thread; public class MyThread1 extends Thread {
//static thread to access in other class static Thread mainThread; public void run() { try {
// Child thread wait here until main completed mainThread.join(); } catch (InterruptedException e1) { e1.printStackTrace(); } //Thread -1 logic for (int i = 0; i < 5; i++) { System.out.println("child Thread -1 " + Thread.currentThread().getName()); try { Thread.sleep(1000); } catch (Exception e) { System.out.println(e); } } } }
Output:
Main Thread Main Thread Main Thread Main Thread Main Thread child Thread -1 t1 child Thread -1 t1 child Thread -1 t1 child Thread -1 t1 child Thread -1 t1
No comments:
Post a Comment