| - デマンド説明
| - アイデアの実現
| - コンテンツコード
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 この .num = 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 この .num = 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です }
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、プログラムの実行中に変更された後、