1.给定两个线程,怎么让第一个线程打印12,然后让第二个线程打印A,然后线程打印34B依次56C往后递推
代码:
/**
* Created by hanson on 2019/4/25.
*/
public class ThreadRankPrint {
public static void main(String args[]) {
PrintObject printObject = new PrintObject();
new Thread(() -> {
for(int i=0;i<26;i++){
printObject.printNum();
}
}).start();
new Thread(() -> {
for(int i=0;i<26;i++) {
printObject.printChar();
}
}).start();
}
}
class PrintObject {
private int counter = 0;
private boolean status = false;
public synchronized void printNum() {
if (status) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print(counter * 2 + 1);
System.out.print(counter * 2 + 2);
status = true;
this.notify();
}
public synchronized void printChar() {
if (!status) {
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.print((char)(counter+'A'));
counter ++;
status=false;
this.notify();
}
}