자바 멀티 스레드 실행 세 만 티켓을 잡을 수 암표를 제한하는 10 표를 강탈했다

| - 수요 설명

 

 

| - 구현

플러스 동기화 방법을 통해 루프를 수행하는 run () 메소드 내부 while 루프를, 쓰기,이 메소드는 스레드가 "암표"라는 판사, 다음 문을 추가하고이 스레드를 종료

 

| - 콘텐츠 코드 

1  패키지 cn.thread1;
2  
 수입 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 인          // 모든 사이클 표 뺀의 수 플러스 잡아 득표 수가 
43 인          count-- ;
 44은          ++ NUM ;
 45          은 try {
 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시
 8   * / 
9  공용  클래스 주요 {
 10      공공  정적  무효 메인 (문자열 []에 args) {
 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