자바 멀티 스레딩 시뮬레이션은 젊은이와 노인 등반 행사

| - 수요 설명

 

| - 아이디어의 실현

 

| - 콘텐츠 코드

. 1  패키지 cn.thread2;
 2  
. 3  / ** 
. 4  * 9527 : @auther
 . 5  * @description : 등반
 . 6  * @program : shi_yong
 . 7  * @Create : 2019년 8월 5일 15시 41분
 . 8   * / 
. 구  공공  클래스 하이킹 유단 실행 가능한이 {
 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주기의 실제 개수가되도록 프로그램 종결 조건의주기가 0이다 . + 1 NUM 
(41)은          위해 ( INT I = -num 1]. I> = 0; 난 ... ) {
 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)는 "첫번째 상승"+ " 100m 번째" )
 (51)는              은 try는 {
 52                  // 세트 시뮬레이션 등반 슬립 단위 시간은 노인, 젊은 짧게하는 데에는 다소 오래 걸린다 
53은                  Thread.sleep를 (시간)
 54이다              } 캐치 (예외 : InterruptedException E) {
 55                  e.printStackTrace ();
 56이다              }
 (57)는  
58          }
 59      }
 60  
61이다 }
Thread 클래스 - 원본 데이터의 구조와 실행 방법을 재 작성을위한
. (1)  패키지 cn.thread2;
 2  
. 3  / ** 
. 4  * 9527 : @auther
 . 5  * @description : 테스트 클래스
 . 6  * @program : shi_yong
 . 7  * @Create : 2019년 8월 5일 15시 52분
 . 8   * / 
. 9 개  공용  클래스 {시험
 10      공공  정적  무효 메인 (문자열 []에 args) {
 . 11          // 기준 생성자 계대, 100㎛의 젊은 노인 50 밀리 초, 100 밀리 상승 100㎛의 상승
 12          // 총 오르기 5 100m 
13되고          오래 = 하이킹 새로운 새 하이킹 (100, 5 );
 14          하이킹 = 어린 새 새로운 하이킹 (50,5)
 15          // 노인 제공 
(16)에게          스레드 올드만 = 새 새 , "노인"스레드 (올드을 ),
 (17)          //이 젊은 제공 
(18)는          스레드 YOUNGMAN = 새로운 새로운 "젊은"스레드 (영 )
 . 19          oldMan.start ();
 20이다          youngMan.start ();
 21이다      }
 22이다 }
프로그램 항목은 --- 스레드를 생성

 

| - 운영 결과

 

| - 과정에서 문제

상영 시간, 우리는 어떤 디스플레이가 끝에 도달하지 않았다가, 문제가 아래 그림 발견 **

루프 상태의 조사에 의해 발견 된 방법을 수행하지 않는 경우 도시 된 바와 같이, 본체 결과 for 루프에 결합되지 않은 경우, 판정 조건 내가 == 0 인 경우, I의 종료 조건은 1이고; 나는 = 그래서 0이 실행되지 = 방법 체

 

난> 0, I> = 0이면, 프로그램 실행으로 변경되면

 

추천

출처www.cnblogs.com/twuxian/p/11303720.html