有 3 个独立的线程,一个只会输出 A,一个只会输出 L,一个只会输出 I。在三个线程同时启动的情况下,请用合理的方式让他们按顺序打印 ALIALI。
三个线程开始正常输出后,主线程若检测到用户任意的输入则停止三个打印线程的工作,整体退出。
private static void printAli() {
int i = 0;
Thread thread1 = new Thread(() -> {
while (true) {
LockSupport.park();
System.out.print("A");
}
});
Thread thread2 = new Thread(() -> {
while (true) {
LockSupport.park();
System.out.print("L");
}
});
Thread thread3 = new Thread(() -> {
while (true) {
LockSupport.park();
System.out.print("I");
}
});
thread1.start();
thread2.start();
thread3.start();
while (true) {
if (i % 3 == 0) {
LockSupport.unpark(thread1);
} else if (i % 3 == 1) {
LockSupport.unpark(thread2);
} else if (i % 3 == 2) {
LockSupport.unpark(thread3);
}
i++;
Thread.sleep(1000);
}
}