java實現【有三個執行緒ID分別是A、B、C,請有多線程式設計實現,在螢幕上迴圈列印10次ABC.】
該題應屬於生產者消費者模式一類
生產者消費者模式:根據標誌位來發訊息,實現對執行緒的控制。
直接貼答案了,請各位大蝦們指正哦。
建立三個執行緒 如下:ThreadA、ThreadB、ThreadC
public class ThreadA implements Runnable {
Printer printer;
ThreadA(Printer printer) {
this.printer = printer;
}
public void run() {
for (int i = 0; i < 10; i++) {
printer.printThreadA();
}
}
}
控制列印的類:
public class Printer {
int flag = 0;
public synchronized void printThreadA() {
if (flag == 0) {
System.out.print("A");
flag = 1;
notifyAll();
}
try {
wait();
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized void printThreadB() {
if (flag == 1) {
System.out.print("B");
flag = 2;
notifyAll();
}
try {
wait();
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized void printThreadC() {
if (flag == 2) {
System.out.print("C");
flag = 0;
notifyAll();
}
try {
wait();
} catch (Exception e) {
e.printStackTrace();
}
}
main方法:
public static void main(String[] args) {
Printer printer = new Printer();
ThreadA ta = new ThreadA(printer);
ThreadB tb = new ThreadB(printer);
ThreadC tc = new ThreadC(printer);
Thread t = new Thread(ta);
t.start();
Thread tt = new Thread(tb);
tt.start();
Thread ttt = new Thread(tc);
ttt.start();
}