zoukankan      html  css  js  c++  java
  • 开启两个线程,一个线程打印A~Z,一个线程打印1~52的数据

    开启两个线程,一个线程打印A~Z,一个线程打印1~52的数据

    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class D20190803  {
    
          private  char a='A';
          private Lock lock = new ReentrantLock();
          private Condition c_one=lock.newCondition();
          private Condition c_two=lock.newCondition();
          private static boolean flag=true;
        
          Thread letter=new Thread(new Runnable() {
              
               public void run() {
                 
                   for (int i=0;i<26;i++) {
                      
                     lock.lock();  
                 
                       try {
                          
                        if(flag) {
                            
                            c_two.await();
                            
                        }
                        
                         System.out.print("【"+a+"】");
                           
                           a++;
                        
                        Thread.sleep(100);
                        flag=true;
                        c_one.signal();
                        
                        
                    } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                    }finally {
                        
                        lock.unlock();
                    }
                         
                   }
                   
               }
          });
          
          
          Thread number=new Thread(new Runnable() {
              
               public void run() {
                   
                   for (int j=1;j<53;j++) {
                       
                       lock.lock();
                       
                       System.out.print(j+",");
                       
                       if(j%2==0 ) {
                          
                           try {
                               
    
                                Thread.sleep(100);
                                c_two.signal();
                                flag=false;
                                  
                           
                            if(!flag) {
                                
                                c_one.await();
                            }
                            
                            
                
                            
                        } catch (InterruptedException e) {
                            
                            e.printStackTrace();
                        }finally {
                            
                            lock.unlock();
                        }
                               
                        } 
                                 
                       }
                       
                      
                   }
                   
          });
         
        public static void main(String[] args) throws InterruptedException {
            
            D20190803 d=new D20190803();
            d.letter.start();
            Thread.sleep(1000);
            d.number.start();
            
            
        }
        
    }

  • 相关阅读:
    基于Spring aop写的一个简单的耗时监控
    Intellij Idea 15 旗舰版 破解
    设计模式之工厂模式
    IDE神器intellij idea的基本使用
    [js] js判断浏览器(转)
    java知识大全积累篇
    一些技术大牛的博客集锦(转)
    添加鼠标右击菜单
    java 方法调用绑定
    Android系列--DOM、SAX、Pull解析XML
  • 原文地址:https://www.cnblogs.com/ltb6w/p/11299216.html
Copyright © 2011-2022 走看看