面试时要求给出一个循环打印线程123的问题,特在此记录一下
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReentrantLock;
public class CycleCallABC {
private int num = 1;
ReentrantLock lock = new ReentrantLock();
Condition condition1 = lock.newCondition();
Condition condition2 = lock.newCondition();
Condition condition3 = lock.newCondition();
public void sub1() {
try{
lock.lock();
while (num != 1){
try {
condition1.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
num = 2;
Thread.sleep(1000);
System.out.println("线程1运行完毕");
condition2.signal();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void sub2() {
try{
lock.lock();