两个线程,一个线程打印1到52,一个线程打印A到Z,打印顺序是12A34B……5152Z
题目
两个线程,一个线程打印1到52,一个线程打印A到Z,打印顺序是12A34B……5152Z
代码实现
public class ThreadTest {
public static void main(String[] args){
Foo tt = new Foo();
new Thread(()->{
synchronized (tt) {
for (int i = 1; i <= 52; i++) {
while(tt.x != 1){
try {
tt.notify();
tt.wait();
} catch (Exception e) {
}
}
System.out.println(i);
if(i % 2 == 0){
tt.x = 2;
}
}
//是为了唤醒最后一次打印Z
tt.notify();
}
},"线程1").start();
new Thread(()->{
synchronized (tt) {
for (int i = 'A'; i <= 'Z'; i++) {
while(tt.x != 2){
try {
tt.notify();
tt.wait();
} catch (Exception e) {
}
}
System.out.println((char)i);
tt.x = 1;
}
}
},"线程2").start();
}
}
class Foo{
public int x = 1;
}