完美世界笔试--多线程协作打印
建立m个线程,每个线程只能打印一种字符,要求线程同时运行,交替打印n次字符。
比如: n=3 m=2打印字符为A和B。要求线程1打印3次A,线程2打印3次B,在屏幕输出ABABAB
注意: 需要检查输入有效性,遇到错误输入时,请打印error并安全退出
样例输入
2ABC
样例输出
ABCABC
import java.util.Scanner;
public class Main {
public static int count = 0;
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n;
String s;
while (sc.hasNextInt()) {
n = sc.nextInt();
s = sc.next();
if (!(n + "").matches("\\+?[1-9][0-9]*") || s == null
|| s.length() <= 0) {
System.out.println("error");
return;
} else {
Object lock = new Object();
for (int i = 0;
i < s.length();
i++) {
new MyThread(s.charAt(i), i, s.length(), lock,n).start();
}
}
}
}static class MyThread extends Thread {
char c;
int index;
int length;
Object lock;
int n;
public MyThread(char c, int index, int length, Object lock,int n) {
this.c = c;
this.index = index;
this.length = length;
this.lock = lock;
this.n = n;
}@Override
public void run() {
print();
}public void print() {
synchronized (lock) {
for (int i = 0;
i < n;
i++) {
while (count % length != index) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print(c);
count++;
lock.notifyAll();
}
}}
}
}
【完美世界笔试--多线程协作打印】
推荐阅读
- 诗歌:|诗歌: 《让我们举起世界杯,干了!》
- 迷失的世界(二十七)
- “不完美,才美”01(190410)
- 金庸们的武侠世界,陪你走过少年时代吗()
- 我的世界同人小说《暮色齿轮》第三回|我的世界同人小说《暮色齿轮》第三回 回忆
- 不以胜负论出关
- “成年人的世界,命都是钱给的”
- 归乡-序章(世界伊始,人类无所依靠,我的故事就从这里开始...)
- 4.23世界阅读日,樊登读书狂欢放送,听书中成长
- 诱惑的世界