開いた二つのスレッド、一つのスレッド印刷A〜Z、52に印刷データスレッド1

 

開いた二つのスレッド、一つのスレッド印刷A〜Z、52に印刷データスレッド1

 

輸入java.util.concurrent.locks.Condition。
輸入java.util.concurrent.locks.Lock。
輸入java.util.concurrent.locks.ReentrantLock。

パブリック クラスD20190803 { 

      プライベート  チャー A =「A」プライベートロックロック= 新しいReentrantLockの();
      民間の条件c_one = lock.newCondition();
      民間の条件c_two = lock.newCondition();
      プライベート 静的 ブールフラグ= ; 
    
      スレッドの手紙 = 新しいスレッド(新しいです実行可能な(){ 
          
           公共 ボイドラン(){ 
             
               ためint型 i = 0; iは<26; I ++ ){ 
                  
                 lock.lock()。  
             
                   試す{ 
                      
                    場合(フラグ){ 
                        
                        c_two.await()。
                        
                    } 
                    
                     System.out.print( "【" + A + "】" )。
                       ++ ; 
                    
                    Thread.sleep( 100 )。
                    フラグ = 
                    c_one.signal(); 
                    
                    
                } キャッチ(InterruptedExceptionある電子){
                    
                    e.printStackTrace(); 
                } 最後に{ 
                    
                    lock.unlock()。
                } 
                     
               } 
               
           } 
      })。
      
      
      スレッド数 = 新しいスレッド(新しいRunnableを(){ 
          
           公共 ラン(){ 
               
               のためにint型 J = 1; jの<53; J ++ ){ 
                   
                   lock.lock(); 
                   
                   System.out.print(J + "" ); 
                   
                   場合(J%2 == 0 ){ 
                      
                       試みる{ 
                           

                            (のThread.sleep 100を)。
                            c_two.signal(); 
                            フラグ = ; 
                              
                       
                        もし(!フラグ){ 
                            
                            c_one.await()。
                        } 
                        
                        
            
                        
                    } キャッチ(InterruptedExceptionある電子){ 
                        
                        e.printStackTrace(); 
                    } 最後に{ 
                        
                        lock.unlock()。
                    } 
                           
                    } 
                             
                   } 
                   
                  
               } 
               
      })。
     
    公共の 静的な 無効メイン(文字列[] args)をスローしますInterruptedExceptionある{ 
        
        D20190803さd = 新しいD20190803()。
        d.letter.start(); 
        Thread.sleep( 1000年); 
        d.number.start(); 
        
        
    } 
    
}

 

 

 

おすすめ

転載: www.cnblogs.com/ltb6w/p/11299216.html