-
大致思路是用条件变量作为两个线程通信的工具,然后用一个AtomicBoolean的变量作为flag保证线程间的可见性
-
代码如下
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; class APrinter implements Runnable { private final Lock lock; private final AtomicBoolean flag; private final Condition waitA, waitB; APrinter(Lock lock, AtomicBoolean flag, Condition waitA, Condition waitB) { this.lock = lock; this.flag = flag; this.waitA = waitA; this.waitB = waitB; } @Override public void run() { while (true) { try { lock.lock(); while (flag.get()) { try { waitB.await(); } catch (InterruptedException e) {
两个线程分别交替打印A、B的一种Java写法
最新推荐文章于 2023-08-22 15:42:41 发布