美文网首页
[JAVA多线程]顺序打印ABC

[JAVA多线程]顺序打印ABC

作者: 浪痕 | 来源:发表于2016-10-31 18:14 被阅读165次

代码如下:
有陷阱,有意者请分析

public class PrintABCByOrder {    
    private static final Object object = new Object();    
   
    public static void main(String[] args) {        
          OrderThread A = new OrderThread(1, "A");        
          OrderThread B = new OrderThread(2, "B");        
          OrderThread C = new OrderThread(3, "C");        
          A.start();        
          B.start();        
          C.start();        
          OrderThread.count ++;        
     }    


    private static class OrderThread extends Thread {        
          volatile static int count;        
          int order;       
           String message;        
          
          OrderThread(int order, String message) {            
              this.order = order;            
              this.message = message;        
          }        
        
        @Override        
        public void run() {            
            synchronized (object) {               
                   while (count != this.order) {                    
                          try {                        
                                    object.wait();                 
                         } catch (InterruptedException e) {                        
                                    e.printStackTrace();                   
                        }                
                 }                
                System.out.println(message);                
                count++;                
                object.notifyAll();          
            }       
       }    
    }
}

很好的一篇文章


Wait-Notify机制

相关文章

网友评论

      本文标题:[JAVA多线程]顺序打印ABC

      本文链接:https://www.haomeiwen.com/subject/nbuputtx.html