Javaのマルチスレッドシミュレーションウサギとカメ

同じトラック上のカメとウサギが行くと高速である誰が見て1 100から始まるましょう。

1  パブリック クラスレーサーは、実装のRunnable {
 2      プライベート 静的文字列の勝者と、// 胜利者
3  
4      @Override
 5      公共 ボイドラン(){
 6          // 赛道
7          INTのステップ= 1;ステップ<= 100;ステップ++ ){
 8   / * 。IF(にThread.currentThread()のgetName() .equals( "兔子")&&ステップ%50 == 0){
 9        試み{
 10            のThread.sleep(200)。
11        }キャッチ(InterruptedExceptionある電子){
 12           e.printStackTrace();
13        }
 14    } * / 
15              のSystem.out.println(にThread.currentThread()のgetName()+ "---->走了" +ステップ+ "步"。 )。
16  
17               ブーリアンフラグ= ゲームオーバー(ステップ)。
18               であれば(フラグ){
 19                   ブレーク20               }
 21  
22          }
 23      }
 24  
25      プライベート ブールゲームオーバー(INTのステップ){
 26          であれば(勝者!= NULL ){
 27              リターン ;
28          } {
 29              であれば(ステップ== 100 ){
 30                  勝者= にThread.currentThread()のgetName()。
31                  のSystem.out.println( "胜利者是- >" + 勝者)。
32              }
 33          }
 34          リターン 35      }
 36  
37      公共 静的 ボイドメイン(文字列[]引数){
 38          レーサーレーサー= 新しいレーサー()。
39          新しいスレッド(レーサー、 "兔子" ).start();
40          スレッド(レーサー、 "亀" ).start();
 41は 
42である     }
 43である 
44れます }

結果:

ウサギ----> 1つのステップに行きます

...................

ウサギ----> 98個のステップに行く
ウサギを----> 99のステップの行く
ウサギを----> 100歩の距離
勝者は- >うさぎ

それはどのようにウサギが勝ったことが判明したが、我々は彼がウサギのために眠るスリープ状態にスレッドを追加する場合、現実亀の亀の勝利に、そして、亀が勝つことができます。

1  パブリック クラスレーサーは、実装のRunnable {
 2      プライベート 静的文字列の勝者と、// 胜利者
3  
4      @Override
 5      公共 ボイドラン(){
 6          // 赛道
7          INTのステップ= 1ステップ++;ステップ<= 100 ){
 8    もし。(にThread.currentThread()のgetName()に等しいです。 ( "兔子")&&ステップ%50 == 0 ){
 9        試み{
 10            のThread.sleep(200 )。
11        } キャッチ(InterruptedExceptionある電子){
12            e.printStackTrace();
13        }
 14    }
 15              のSystem.out.println(にThread.currentThread()のgetName()+ "---->走了" +ステップ+ "步"。 )。
16  
17               ブーリアンフラグ= ゲームオーバー(ステップ)。
18               であれば(フラグ){
 19                   ブレーク20               }
 21  
22          }
 23      }
 24  
25      プライベート ブールゲームオーバー(INTのステップ){
 26          であれば(勝者!= NULL ){
 27              リターン ;
28          } {
 29              であれば(ステップ== 100 ){
 30                  勝者= にThread.currentThread()のgetName()。
31                  のSystem.out.println( "胜利者是- >" + 勝者)。
32              }
 33          }
 34          リターン 35      }
 36  
37      公共 静的 ボイドメイン(文字列[]引数){
 38          レーサーレーサー= 新しいレーサー()。
39          新しいスレッド(レーサー、 "兔子" ).start();
40          スレッド(レーサー、 "亀" ).start();
 41は 
42である     }
 43である 
44れます }

結果:

カメ----> 96のステップダウン
カメ----> 97のステップダウン
カメ----> 98のステップダウン
カメ----> 99のステップダウン
離れカメ----> 100のステップ
勝者は- >カメの
ウサギ----> 50個の手順を行きます

これは関係なく、実行亀が勝ったかの場合ではありません。

おすすめ

転載: www.cnblogs.com/xiaoqiqistudy/p/10984279.html