Java多线程Lock Condition的使用介绍
假设:多线程之间按照顺序调用,实现A->B->C->A->B->C…->A,要求用3个线程实现:
A打印5次,B打印10次,C打印15次
接着
A打印5次,B打印10次,C打印15次
…来10轮
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class ConditionDemo {
//标志位(当num=1时A线程执行,当num=2时B线程执行,当num=3时C线程执行)
private int num = 1;
private Lock lock = new ReentrantLock();
private Condition condition1 = lock.newCondition();
private Condition condition2 = lock.newCondition();
private Condition condition3 = lock.newCondition();
public void printA5(){
lock.lock();
try{
//判断,当num为1时A线程执行
while(num != 1){
condition1.await();
}
//A线程打印5次
for (int i = 1; i <= 5 ; i++