编写一个程序(20分),开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推
一个解:
public class MyThread extends Thread {
private char id; //线程id
private static int count = 0; //总的打印次数
private static String lock = "lock";//锁
public static void main(String args[]) {
MyThread thread_a = new MyThread('A');
MyThread thread_b = new MyThread('B');
MyThread thread_c = new MyThread('C');
}
public MyThread(char id) {
this.id = id;
this.start();
}
public void run() {
synchronized (lock) {
for (int i = 0; i < 10; i++) {
try {
if ((count%3)==0) {//如果不能获得请求
count ++;
System.out.print(id);
lock.wait(); //打印完了等待
lock.notify(); //唤醒其他线程
} else if((count%3)==1){
count ++;
System.out.print(id);
lock.wait();
lock.notify();
yield();
}else if((count%3)==2){
count ++;
System.out.println(id);
lock.notify();
lock.wait();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
一道迅雷远程笔试题
最新推荐文章于 2022-02-25 18:19:43 发布