1. 程式人生 > >java實現【有三個執行緒ID分別是A、B、C,請有多線程式設計實現,在螢幕上迴圈列印10次ABC.】

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();
 }