| - デマンド説明
| - 実装
プラス同期メソッドをループを実行するrun()メソッド内のwhileループを、書く、このメソッドは、スレッドが「ダフ屋」と呼ばれる裁判官に次のステートメントを追加し、このスレッドを終了します
| - コンテンツコード
1 パッケージcn.thread1。 2 3 インポートたjava.util.Enumeration。 4 5 / ** 6 * @auther :: 9527 7 * @description:看病 8 * @program:shi_yong 9 * @Create:2019年8月5日14時34 10 * / 11 パブリック クラスの患者は、実装のRunnable { 12 プライベート文字列名; 13 プライベート int型 NUM = 0; // 抢的票 14 プライベート int型のカウント= 10; // 总票数 15 プライベート ブールフラグ=においてfalseに ; // チケット購入するかどうかを記録 16 。17 公共患者(){ 18である } 。19 20 公衆患者(文字列名){ 21は この .nameの= 名; 22である } 23れる 24 @Override 25 公共 ボイドRUN(){ 26 しばらく(!{旗) 27枚の 切符(); 28 // 票をつかむためにダフ屋場合、ループが終了する 29 のIF(..にThread.currentThread()のgetName()等号( "ダフ屋" )){ 30 リターン、 31である } 32 } 33は 34である } 35枚の 36 公共 同期 ボイドチケット(){ 37 // ループ終了条件設定 38である IF(COUNTが<= 0 ){ 39 フラグには、= trueに、 40 の復帰を、 41である } 42である // サイクル毎に、総投票数マイナス1、プラス投票数グラブ 43が count-- ; 44である NUM ++ ; 45 試み{ 46である // 待ち時間シミュレート 47 Thread.sleep(100 ); 48 } キャッチ(InterruptedExceptionあるE){ 49 e.printStackTrace(); 50 } 51は、 // 要求出力 52で のSystem.out.println(にThread.currentThread()のgetName()+「グラブ。最初の"+ NUM +"チケットに、残りの"+ +カウント"チケット"!); 53で 54ある } 55 }
1 パッケージcn.thread1。 2 3 / ** 4 * @auther :: 9527 5 * @description:运行 6 * @program:shi_yong 7 * @Create:2019年8月5日15:00 8 * / 9 パブリック クラスメイン{ 10 公共 静的 ボイド主(文字列[]引数){ 11 患者P = 新しい患者()。 12 13 スレッドT1 = 新しいスレッド(P、 "桃跑跑" )。 14 スレッドT2 = 新しいスレッド(P、 "张票票" )。 15 スレッドT3 = 新しいスレッド(P、 "黄牛党" ); 16 t1.start()。 17 t2.start()。 18 t3.start()。 19 } 20 }
| - 業績
| - エラーログ
判定方法は、人々の票をつかむために最もオープンなスタートは、何の実装要件がなかった、外のrun()メソッドに書きます
それは、出力前に決定された場合、以下に示すように、完全なルーチンを終了をつかむためにチケットを引き起こすことはありません