static void test3() throws InterruptedException{
Lock lock=new ReentrantLock();
Condition conditionLock1=lock.newCondition();
Condition conditionLock2=lock.newCondition();
Condition conditionLock3=lock.newCondition();
Thread thread1=new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
lock.lock();
System.out.println("1");
//Thread.sleep(1000);
conditionLock2.signal();
conditionLock1.await();
lock.unlock();
}
}catch (Exception e){
}
}
});
Thread thread2=new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
lock.lock();
System.out.println("2");
//Thread.sleep(1000);
conditionLock3.signal();
conditionLock2.await();
lock.unlock();
}
}catch (Exception e){
}
}
});
Thread thread3=new Thread(new Runnable() {
@Override
public void run() {
try {
while (true) {
lock.lock();
System.out.println("3");
// Thread.sleep(1000);
conditionLock1.signal();
conditionLock3.await();
lock.unlock();
}
}catch (Exception e){
}
}
});
thread1.start();
thread3.start();
thread2.start();
}