public void printA(){
lock.lock();
try {
while(num != 1){
condition1.await();
}
System.out.print(Thread.currentThread().getName()+"=>"+num+" ");
num++;
condition2.signal();
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public void printB(){
lock.lock();
try {
while(num != 2){
condition2.await();
}
System.out.print(Thread.currentThread().getName()+"=>"+num+" ");
num++;
condition3.signal();
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
public void printC(){
lock.lock();
try {
while(num != 3){
condition1.await();
}
System.out.print(Thread.currentThread().getName()+"=>"+num+" ");
num=num-2;
condition1.signal();
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
}