マルチプリントサイクルプロセスのABACを行きます

いくつかの時間前に対象が、繰り返し出力をマルチスレッドのJava ABACを完了するために必要とされる、スレッドAが値出力Aは、B出力のみスレッドBは、C出力のみCスレッド必要

私を達成しようと行くに切り替えるには、Javaへの可能性が低いです、

その夜の後1時間以上を変更し、最終的に完成し、だけでなく、理解するための知識を補完します。

 パッケージメイン

インポート(
   FMT 
   同期

VaRのWG sync.WaitGroupの
 VaRの n個のint型
のvar chAの=作る(ちゃんint型VAR chBの=作る(ちゃんint型VAR CHC =メイク(ちゃんint型

FUNCのメイン(){
   fmt.Scan( N)
   wg.Add(1// 増加処理タスクは、
   (n)は、送信行きます
   wg.Wait()// 利用time.Sleepの恥ずかしさを回避しつつwg.Done番号()操作は、wg.Add(数の増加)に等しくなるまで、プロセスの終了を待ちます
}

FUNCセンド(n個の整数){
   行く(CHA)
   行くB(chBの)
   行くC(CHC)
   chAの < - 1
}

FUNC(チャンCのINT ){
    ためには、 { // 走行に保つことである
      IFを COUNT <=、= <-C:COUNT N- {
         fmt.Print(" A " であれば(カウント+ 1)%4!= 0 {
            chBの < -カウント+ 1 
         } {
            CHC < -数+ 1
         }
      } {
         wg.Done()
         リターン
      }
   }
}

FUNCのB(CちゃんINT ){
    {
       場合カウント:= <-c。カウント<= N {
         fmt.Print(" B " 
         chAの < -カウント+ 1 
      } {
         wg.Done()
         リターン
      }
   }
}

FUNC C(CちゃんINT ){
    {
       場合カウント:= <-c。カウント<= N {
         fmt.Print(" C " 
         chAの < -カウント+ 1 
      } {
         wg.Done()
         リターン
      }
   }
}

 

おすすめ

転載: www.cnblogs.com/VingB2by/p/11691603.html