Print Thread in a sequential manner
package com.rohan.test;
/**
*
* @author ROHAN
There are 5 threads t1, t2, t3, t4, t5
we want to print 1 to 100 in ascending order but all these integers should be printed by above 5 threads in
sequential order.
Ex: t1 will print : 1
t2 will print : 2
t3 will print : 3
t4 will print : 4
t5 will print : 5
t1 will print : 6
t2 will print : 7
*/
class PrintSequentialThread implements Runnable {
static Object lock = new Object();
int totalnum = 100;
static int num = 1;
int sequence;
PrintSequentialThread(int sequence) {
this.sequence = sequence;
}
@Override
public void run() {
while(num <= totalnum-4) {
synchronized(lock) {
while(num % 5 != sequence) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+ " will print : "+num);
num++;
lock.notifyAll();
}
}
}
}
public class SequentialThread {
public static void main(String[] args) {
PrintSequentialThread runnableThread1 = new PrintSequentialThread(1);
PrintSequentialThread runnableThread2 = new PrintSequentialThread(2);
PrintSequentialThread runnableThread3 = new PrintSequentialThread(3);
PrintSequentialThread runnableThread4 = new PrintSequentialThread(4);
PrintSequentialThread runnableThread5 = new PrintSequentialThread(0);
Thread t1 = new Thread(runnableThread1, "t1");
Thread t2 = new Thread(runnableThread2, "t2");
Thread t3 = new Thread(runnableThread3, "t3");
Thread t4 = new Thread(runnableThread4, "t4");
Thread t5 = new Thread(runnableThread5, "t5");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
Comments
Post a Comment