Javaのマルチスレッドの練習3は、唯一のチケットをつかむことができダフ屋を制限するために10票を奪いました。

| - デマンド説明

 

 

| - 実装

プラス同期メソッドをループを実行する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 }
Threadクラス
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()メソッドに書きます

 それは、出力前に決定された場合、以下に示すように、完全なルーチンを終了をつかむためにチケットを引き起こすことはありません

 

 

おすすめ

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