Category Archives: thread

Run main thread before child thread.

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. 

 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

74 total views, no views today