JAVA 카프리스 : 단일 및 작업 관계를 멀티 스레드

참조 티켓 티켓 윈도우 시스템 DAY17-190807

1. 다중 스레드 단일 작업 (각 스레드는 오직 하나의 작업 매칭이) - 세 티켓 윈도우가 티켓 시스템을 가정 (만 자신을 판매 별도로 각 티켓 (창 50 티켓 150 개 티켓의 객실을 선택할 수 있습니다) 창 50 티켓) (2에 비해 균형 판매 티켓은, 자신의 투표 동일한 확률을) 판매

2. 작업 다중 스레드 (작업을 약탈하는 독점적 경쟁에서 여러 스레드가 될 수있는 자원) - 티켓 시스템 (티켓 시스템 (150 개) 티켓의 총) 가정 티켓 창 1에 비해 티켓을 판매하는 세 가지 공동 독점적 경쟁 (있다, 임의 잡아 티켓은 투표 반드시 동일하지 확률) 판매

 

. (1 개)  공용  클래스 에서 Test1 {
 2      공용  정적  무효 메인 (문자열 []에 args) {
 . 3          //는 각각의 스레드가 하나의 태스크가 할당되어있는 것으로, 우리는 병렬 처리를 설명한다. 이어서 달성 할 스레드 클래스 상속을 사용하여
 4.          // MyThread myThread1를 MyThread 새로운 새 = ()
 . 5          // MyThread myThread2 MyThread 새로운 새 = ()
 . 6          // MyThread myThread3 MyThread 새로운 새 = ()
 . 7          // 
. 8          // myThread1.start ();
 9          // myThread2.start ();
 10          // myThread3.start ();
 11          // 우리는 공통점을 설명한다고 가정은 작업 경쟁력을 병렬 처리합니다. 그래야의 Runnable 인터페이스 구현 
(12)         TicketWindows ticketWindows는 = 새로운 TicketWindows ();
13          스레드 thread1 = 새로운 스레드 (ticketWindows "窗口1" );
14          스레드 thread2 = 새로운 스레드 (ticketWindows "窗口2" );
15          스레드 thread3 = 새로운 스레드 (ticketWindows "窗口3" );
16          thread1.start ();
17          thread2.start ();
18          thread3.start ();
19  
20      }
 21 }
공공  클래스 TicketWindows 구현 실행 가능한 { 

    개인 정수 nums = 5000 ; 

    @Override 
    공공  무효 RUN () {
         // 와서 한 번에 처리 하나 개의 스레드 만 대신 1.synchronized 수정 과정을,
         // 2.synchronized 코드 블록을 동기화 잠금 개체는 모든 스레드에 의해 공유되어야한다
         // 동기화 (는 Thread.currentThread () getName ().) {
         // } 
        그동안 합니다 (nums> 0 ) {
             동기화 ( 다음은이 ) {
                 IF 합니다 (nums> 0 ) { 
                    nums - ;
                    에서 System.out.println (.는 Thread.currentThread () getName () + "卖了一张票剩下."+ nums + "张" ); 
                } 

            } 
            시도 { 
                Thread.sleep를 ( 100 ); 
            } 캐치 (의 InterruptedException E) {
                 // TODO 자동 생성 캐치 블록 
                e.printStackTrace (); 
            } 

        } 

    } 

    // @Override
     // 공공 무효 실행 () {
     //  // TicketWindows.class获取TicketWindows.class文件
     // (TicketWindows.class) {동기화
     // // 하나 개의 스레드 만 온 동시에 나타내는 1.synchronized 수정 방법,
     //  // 2.synchronized 코드 블록, 동기화 잠금 객체가 모든 스레드에 의해 공유되어야한다
     //  // 동기화 (는 Thread.currentThread을 ( )는 .getName ()) {
     //은  // }
     // 그동안합니다 (nums가 0) {>
     // ; nums--
     // .에서 System.out.println (는 Thread.currentThread () getName () + "하나 품 "nums + + 남은 티켓
     // "장을 ");
     // }
     // }
     // } 

}

 

추천

출처www.cnblogs.com/kzf3406/p/11360460.html