Javaのマルチスレッドシミュレーション演習老いも若き登山

| - デマンド説明

 

| - アイデアの実現

 

| - コンテンツコード

1  パッケージcn.thread2;
 2  
。3  / ** 
4  * 9527 :: @auther
 。5  * @description:クライミング
 。6  * @program:shi_yong
 。7  * @Create:2019年8月5日午後03時41分
 。8   * / 
9  パブリック クラスハイキング実装のRunnable {
 10      //のデータを初期化するために使用される二つの特性セット
11。     プライベート INT 時間、
 12である     プライベート INT NUM;
 13である 
14      公共ハイキング(int型時間、INT NUM){
 15          この .time =時間;
16          この .nu​​m = NUM。
17      }
 18  
19      公衆ハイキング(){
 20      }
 21  
22      公衆 INT getTime(){
 23          の戻り時間;
24      }
 25  
26      公共の ボイドのsetTime(int型の時間){
 27          この .time = 時間。
28      }
 29  
30      公衆 INT getNum(){
 31          リターンNUM。
32      }
 33  
34     公共 ボイド setNum(INT NUM){
 35          この .nu​​m = NUM;
 36      }
 37  
38である     @Override
 39      公共 ボイド(){RUN
 40          //が原因NUM -1サイクルの実際の数であるように、プログラム終了条件のサイクルは、ゼロであります。+ 1 NUM 
41がある         ためINT I = -num 1; I> = 0; i-- ){
 42は              =スレッドT にThread.currentThread();
 43は 
44である             // セットループが終了した場合、終了条件----、それこの方法アウト
45              IF(Iは== 0 ){
 46である                  のSystem.out.println(t.getName()+ "の終わりに達しています");
 47                  リターン;
 48              }
 49              // 要求出力メッセージ
50              のSystem.out.println(t.getName()+ +(NUM - i)が"最初に登った" + " 100メートル目" );
 51である             試行が{
 52                  // セットシミュレークライミング睡眠単位時間は、それが高齢者、若者が短くとるとる少し時間がかかり
53である                 のThread.sleep(時間);
 54である              } キャッチ(InterruptedExceptionあるE){
 55                  e.printStackTrace();
 56である             }
 57は、 
58          }
 59      }
 60  
61です }
Threadクラス - 元のデータ構造およびrunメソッドを書き換えます
1  パッケージcn.thread2;
 2  
。3  / ** 
4  * 9527 :: @auther
 。5  * @description:テストクラス
 6  * @program:shi_yong
 。7  * @Create:2019年8月5日15:52
 。8   * / 
9  パブリック クラス{試験
 10      公共 静的 ボイドメイン(文字列[]引数){
 11          // 参照コンストラクタによって継代し、100メートル若者、高齢者、50ミリ秒、100ミリ秒を登っ100メートル登っ
 12          // 合計登る5 100メートル
13で          ハイキングオールド= 新しい新しいハイキング(100、5 );
 14          ハイキング=ヤング新しい新しいハイキング(50,5);
 15          // 高齢設け
16を          スレッド・オールドマンが= 新しい新しい(旧、「高齢者」スレッド);
 17          //は若い設け
18である          スレッド若手= 新しい新しいスレッド(ヤング、「若い」。19          oldMan.start ();
 20である         youngMan.start();
 21である     }
 22です }
プログラムのエントリ---スレッドを作成

 

| - 業績

 

| - のプロセスにおける問題

時間を実行して、我々は何も表示が最後に到達していないがあり、問題は、以下に例示見つけ**

ループの条件の調査によって発見され、方法が行われない場合に示されるように、体内で得られる、forループに結合されていない場合決意条件がI == 0である場合、私の終了条件は、1であり; iが=だからメソッド本体= 0は実行されません

 

私は> 0、I> = 0、プログラムの実行中に変更された後、

 

おすすめ

転載: www.cnblogs.com/twuxian/p/11303720.html