/* codedaily.in - PrintSequence*/
class PrintSequenceRunnable
implements Runnable{
public int PRINT_NUMBERS_UPTO=10;
static int number=1;
int remainder;
PrintSequenceRunnable(int remainder)
{
this.remainder=remainder;
}
@Override
public void run() {
while (number < PRINT_NUMBERS_UPTO-1) {
synchronized (lock) {
while (number % 3 != remainder) { // wait for numbers other than remainder
try {
lock.wait();
e.printStackTrace();
}
}
System.
out.
println(Thread.
currentThread().
getName() + " " + number
); number++;
lock.notifyAll();
}
}
}
}
class PrintThreadsSequentiallyMain {
public static void main
(String[] args
) {
PrintSequenceRunnable runnable1=new PrintSequenceRunnable(1);
PrintSequenceRunnable runnable2=new PrintSequenceRunnable(2);
PrintSequenceRunnable runnable3=new PrintSequenceRunnable(0);
t1.start();
t2.start();
t3.start();
}
}
LyogY29kZWRhaWx5LmluIC0gUHJpbnRTZXF1ZW5jZSovCgoKY2xhc3MgUHJpbnRTZXF1ZW5jZVJ1bm5hYmxlIGltcGxlbWVudHMgUnVubmFibGV7CiAKICAgIHB1YmxpYyBpbnQgUFJJTlRfTlVNQkVSU19VUFRPPTEwOwogICAgc3RhdGljIGludCAgbnVtYmVyPTE7CiAgICBpbnQgcmVtYWluZGVyOwogICAgc3RhdGljIE9iamVjdCBsb2NrPW5ldyBPYmplY3QoKTsKIAogICAgUHJpbnRTZXF1ZW5jZVJ1bm5hYmxlKGludCByZW1haW5kZXIpCiAgICB7CiAgICAgICAgdGhpcy5yZW1haW5kZXI9cmVtYWluZGVyOwogICAgfQogCiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICB3aGlsZSAobnVtYmVyIDwgUFJJTlRfTlVNQkVSU19VUFRPLTEpIHsKICAgICAgICAgICAgc3luY2hyb25pemVkIChsb2NrKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAobnVtYmVyICUgMyAhPSByZW1haW5kZXIpIHsgLy8gd2FpdCBmb3IgbnVtYmVycyBvdGhlciB0aGFuIHJlbWFpbmRlcgogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2sud2FpdCgpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXROYW1lKCkgKyAiICIgKyBudW1iZXIpOwogICAgICAgICAgICAgICAgbnVtYmVyKys7CiAgICAgICAgICAgICAgICBsb2NrLm5vdGlmeUFsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CiAKCmNsYXNzIFByaW50VGhyZWFkc1NlcXVlbnRpYWxseU1haW4gewogCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAKICAgICAgICBQcmludFNlcXVlbmNlUnVubmFibGUgcnVubmFibGUxPW5ldyBQcmludFNlcXVlbmNlUnVubmFibGUoMSk7CiAgICAgICAgUHJpbnRTZXF1ZW5jZVJ1bm5hYmxlIHJ1bm5hYmxlMj1uZXcgUHJpbnRTZXF1ZW5jZVJ1bm5hYmxlKDIpOwogICAgICAgIFByaW50U2VxdWVuY2VSdW5uYWJsZSBydW5uYWJsZTM9bmV3IFByaW50U2VxdWVuY2VSdW5uYWJsZSgwKTsKIAogICAgICAgIFRocmVhZCB0MT1uZXcgVGhyZWFkKHJ1bm5hYmxlMSwiVDEiKTsKICAgICAgICBUaHJlYWQgdDI9bmV3IFRocmVhZChydW5uYWJsZTIsIlQyIik7CiAgICAgICAgVGhyZWFkIHQzPW5ldyBUaHJlYWQocnVubmFibGUzLCJUMyIpOwogCiAgICAgICAgdDEuc3RhcnQoKTsKICAgICAgICB0Mi5zdGFydCgpOwogICAgICAgIHQzLnN0YXJ0KCk7ICAgCiAgICB9Cn0KIA==