0
点赞
收藏
分享

微信扫一扫

算法:三线程打印

进击的铁雾 2022-08-19 阅读 65


1 condation方式如下,其他方式参考

public class ThreeThreadPrintCondition {


public static void main(String[] args) {
ReentrantLock lock = new ReentrantLock();
Condition conditionA = lock.newCondition();
Condition conditionB = lock.newCondition();
Condition conditionC = lock.newCondition();
Thread thread1 = new Thread(new Runnable1("A", conditionA, conditionB, lock));
Thread thread2 = new Thread(new Runnable1("B", conditionB, conditionC, lock));
Thread thread3 = new Thread(new Runnable1("C", conditionC, conditionA, lock));
thread1.start();
thread2.start();
thread3.start();
}
}

class Runnable1 implements Runnable {
private String printStr = "";
private Condition conditionWait;
private Condition conditionSignal;
ReentrantLock lock;
private int count;

public Runnable1(String printStr, Condition conditionWait, Condition conditionSignal, ReentrantLock lock) {
this.printStr = printStr;
this.conditionWait = conditionWait;
this.conditionSignal = conditionSignal;
this.lock = lock;
}

@Override
public void run() {
while (true) {
lock.lock();
if (count == 3 * 10 - 1) {
lock.unlock();
return;
}
System.out.println("输出" + printStr);
++count;
conditionSignal.signalAll();
try {
conditionWait.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
lock.unlock();
}
}

public boolean needReturn() {

return count == 3 * 10 - 1;
}
}


举报

相关推荐

0 条评论