Java并发编程-并发交替打印字符串
实现三个线程交替打印a,b,c
方法
使用线程池+Synchronized实现
public class Parallel {
public static void main(String[] args) {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(4, 4, 200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(4));
Printer printer = new Printer();
for (int i = 0; i < 4; i++) {
final int cur = i;
threadPoolExecutor.submit(() -> {
char tmp = (char)('a' + cur);
printer.print(String.valueOf(tmp), cur);
});
}
}
private static class Printer {
int current = 0;
Object object = new Object();
public void print(String str, int next) {
while(true) {
synchronized (object) {
while(current%4 != next) {
try {
object.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println(str);
current = current + 1;
object.notifyAll();
}
}
}
}
}