接着 java线程交替执行的实现_北尘-CSDN博客_java线程交替运行 ,再补一种写法;
@Slf4j
public class AlternateExecute {
public static void main(String[] args) {
TransferQueue transferQueue = new LinkedTransferQueue();
char[] charsA = {'A','B','C'};
char[] charsB = {'1','2','3'};
Thread threadA = new Thread(() -> {
for (int i = 0; i < charsA.length; i++) {
try {
log.info("{}" ,transferQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
transferQueue.transfer(charsA[i]);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Thread threadB = new Thread(() -> {
for (int i = 0; i < charsB.length; i++) {
try {
transferQueue.transfer(charsB[i]);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
log.info("{}" ,transferQueue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
threadA.start();
threadB.start();
}
}