码迷,mamicode.com
首页 > 其他好文 > 详细

练习题之Wait/Notify

时间:2016-05-18 00:25:44      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

方案一:

public class PrintABC {
  public static void main(String[] args) {
    AtomicInteger synObj = new AtomicInteger(0);
    Runnable r = new ThreadModel(synObj);
    new Thread(r,"A").start();
    new Thread(r,"B").start();
    new Thread(r,"C").start();
  }
}

public class ThreadModel implements Runnable {
 public volatile AtomicInteger ato;
  
 public ThreadModel(AtomicInteger ato) {
    this.ato = ato;
 }

 public void run() {
  for(int i=0;i<10;i++) {
    synchronized(ato) {
      if(ato.get()%3==0) {
         System.out.println("A);
         ato.set(ato.get()+1);
         ato.notifyAll();
      } else if(ato.get()%3==1) {
         System.out.println("B);
         ato.set(ato.get()+1);
         ato.notifyAll();
      } else if(ato.get()%3==2) {
         System.out.println("C);
         ato.set(ato.get()+1);
         ato.notifyAll();
      } else {
         ato.wait();
      }
    }
  }
 }
}

方案二:

public class printABC {
 
 public static void main(String [] args) {
   AtomicInteger ato = new AtomicInteger(0);
   ThreadModel modelA = new ThreadModel(ato,"A",0);
   ThreadModel modelB = new ThreadModel(ato,"B",0);
   ThreadModel modelC = new ThreadModel(ato,"C",0);
   new Thread(modelA).start();
   new Thread(modelB).start();
   new Thread(modelC).start();
 }
  
}

public class ThreadModel {
 
  private AtomicInteger ato;
  private String printChar;
  private int flag;
  private int count = 0;
  public ThreadModel(AtomicInteger ato,String printChar,int flag) {
    this.ato = ato;
    this.printChar = printChar;
    this.flag = flag;
  }
 
 public void run() {
    synchronized(ato) {
       while(true) {
          if(ato.get()%3==flag) {
             System.out.println(printChar);
             ato.set(ato.get()+1);
             ato.notifyAll();
             count++;
             if(count==10) {
                break;
              }
          }else {
             ato.wait();
          }
       }
    }
 }
 
}

 

练习题之Wait/Notify

标签:

原文地址:http://www.cnblogs.com/moonandstar08/p/5503613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!