两个线程交替打印的实现方式,此处借助SynchronizedQueue这个类来实现。此类有两个操作take(), put(?) ,只有当两个线程分别同时调用take, put 时才会调用返回,故利用此类的这个特性来实现交替打印。代码参考如下:
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
/**
* 交替打印的实现
* 使用SQ SynchronizedQueue
*
* 一个打印1~10
* 一个打印A~Z
* 循环
*
* @author davidwang2006@aliyun.com
* @date 2019/12/27 0027 下午 3:07
*/
public class RotatePrint {
public static void main(String[] args) {
SynchronousQueue q0 = new SynchronousQueue();
SynchronousQueue q1 = new SynchronousQueue();
Runnable worker0 = ()->{
int i = 0;
while(true){
try {
q0.take();
System.out.printf("%d",(i++)%10 + 1);
q1.put("");
TimeUnit.MILLISECONDS.sleep(200L);
} catch (InterruptedExce