Java多线程通信:交替打印ABAB

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linyixiao88/article/details/81873578

使用wait()和notify()实现Java多线程通信:两个线程交替打印A和B,如ABABAB

public class Test {
   public static void main(String[] args) {
       final PrintAB print = new PrintAB();

       new Thread(new Runnable() {
           public void run(){
               for(int i=0;i<5;i++) {
                   print.printA();
                   }
                   }
       }).start();

       new Thread(new Runnable() {
           public void run() {
               for(int i=0;i<5;i++) {
                   print.printB(); }
                            }
         }).start();
       }
 }

 class PrintAB{
    private boolean flag = true;

    public synchronized void printA () {
            while(!flag) {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                             } }
                System.out.print("A");
                 flag = false;
                 this.notify();
            }

    public synchronized void printB () {
            while(flag) {
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.print("B");
            flag = true;
            this.notify(); }
 }

猜你喜欢

转载自blog.csdn.net/linyixiao88/article/details/81873578