SLEEP
One of the
best ways to help your threads take turns is by using sleep.

package com.minte9.threads.sleep;
public class Sleep {
public static void main(String[] args)
throws InterruptedException {
System.out.println("Start in main");
new Thread(new MyClass(1)).start();
new Thread(new MyClass(2)).start();
new Thread(new MyClass(3)).start();
System.out.println("Back in main");
}
}
class MyClass implements Runnable {
int no = 0;
public MyClass(int i) {
no = i;
}
@Override public void run() {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {}
System.out.println("Thread " + no + " / run");
}
}
STOP
Use a
flag to stop a thread run() execution.

package com.minte9.threads.sleep;
public class Stop {
public static void main(String[] args)
throws InterruptedException {
System.out.println("Start main thread");
ThreadClass t1 = new ThreadClass("A");
ThreadClass t2 = new ThreadClass("B");
new Thread(t1).start();
new Thread(t2).start();
Thread.sleep(2000);
t1.stop();
t2.stop();
Thread.sleep(1000);
System.out.println("Exit main thread");
}
}
class ThreadClass implements Runnable {
private String name;
private Boolean exit = false;
public ThreadClass(String n) {
name = n;
}
@Override public void run() {
while(!exit) {
System.out.println("Thread " + name + " / Run");
sleep(1000);
}
System.out.println("Thread " + name + " / Exit");
}
public void sleep(int ms) {
try {
Thread.sleep(ms);
} catch (InterruptedException e) {}
}
public void stop() {
exit = true;
}
}