描述 | |
---|---|
知识点 | 字符串,循环,链表,队列,栈,查找,搜索,排序,树,图,数组,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归 |
运行时间限制 | 10M |
内存限制 | 128 |
输入 | 输入一个int整数 |
输出 | 输出多个ABCD |
样例输入 | 10 |
样例输出 | ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCD |
import java.util.Scanner;
public class Main{
private static String status = "A";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final int n = sc.nextInt();
sc.close();
//四个线程,每个线程控制打印一个字母,使用status控制锁定当前线程和线程顺序
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < n;) {
synchronized (status) {
if (status.equals("A")) {
System.out.print("A");
status = "B";
i++;
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < n;) {
synchronized (status) {
if (status.equals("B")) {
System.out.print("B");
status = "C";
i++;
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < n;) {
synchronized (status) {
if (status.equals("C")) {
System.out.print("C");
status = "D";
i++;
}
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < n;) {
synchronized (status) {
if (status.equals("D")) {
System.out.print("D");
status = "A";
i++;
}
}
}
}
}).start();
}
}