@JAVA多线程学习之-3个线程分别打印ABC交替5次
1. 使用Lock-Condition 实现。定义一个value 来控制哪个线程工作。因为是用if 判断的,i++操作必须要在正确打印之后自己去控制i++,不可放在for循环力里面
class Resource1 {
private volatile int value = 1;
private ReentrantLock lock = new ReentrantLock();
Condition condition1 = lock.newCondition();
void printA() {
try {
lock.lock();
for (int i = 0; i < 5; ) {
if (value == 1) {
System.out.print(Thread.currentThread().getName());
value = 2;
i++;
condition1.signalAll();
} else {
condition1.await();
}
}
} catch (InterruptedException e) {
} finally {
lock.unlock();
}
}
void printB() {
try {
lock.lock();
for (int i = 0; i <