자바 집행자 프레임 워크 사용

  자바 집행자 프레임 워크는 멀티 스레드 응용 프로그램 및 패키지 개발을위한 더 편리한 프레임 워크, JDK1.5 이후에 시작됩니다;

  기존의 Thread 클래스, 사용하기 쉬운 자바의 집행자, 더 나은 성능, 더 쉽게 관리 할 수있는, 그리고 스레드 풀을 지원에 비해, 그래서 우리는 파충류, 파충류 크롤링의 효율성을 개선하기 위해, 우리는 여러 스레드를 사용하고자 할 때, 자바를 사용하는 것이 좋습니다 개발 실행자 워크는 간단하고 효율적인 양이기 때문에 실행기 프레임 워크 달성하는 단계;

파충류 응용 프로그램에서 사용되는 자바 집행자 프레임 워크

  공통 인터페이스 :

  스레드 풀의 스레드 고정 된 수를 만듭니다.

  공공 정적 ExecutorService를 인 newFixedThreadPool (INT의 nThreads) 

   

  스레드를 실행

  보이드 java.util.concurrent.Executor.execute (Runnable를 명령)

 

  활성 스레드의 수를보기

  INT java.util.concurrent.ThreadPoolExecutor.getActiveCount ()

 

  모든 스레드를 종료

  () java.util.concurrent.ExecutorService.shutdown 무효화

  설명 : 이러한 만들 때 효과적인 조치를 수행 할 것이다 처리시 10 실제 스레드가, 실행 프로그램을 효과적으로 큐 스케줄링을 차단한다면 다중 스레드 관리 실행자 스레드 풀은 10이다. 우리에게 이것은 개발자에게 투명하게 그 안에서 전혀 특정 구현이 없습니다;

  테스트 케이스

  

(1)  수입 java.util.concurrent.ExecutorService;
 수입 java.util.concurrent.Executors;
3  수입 java.util.concurrent.ThreadPoolExecutor;
4  가져 오기 java.util.concurrent.atomic.AtomicInteger;
5  
6  / ** 
7  * @author의 zsh을
 8  * @site www.qqzsh.top
 9  * @company wlgzs
 10  * @create 2019년 6월 2일 10시 57분
 11  * @description
 12   * / 
13  공용  클래스 ExecutorTest {
 14  
(15)      // 执行标识
(16)     개인  정적  부울 exeFlag = true로 ]
 . (17)  
(18)는      공공  정적  무효 메인 (문자열 []에 args) 드로우 예외 : InterruptedException {
 19.          // 초기 스레드 생성 ExecutorService를 고정 연결 풀 10 만들기 
20된다          ExecutorService를 ExecutorService를 = Executors.newFixedThreadPool (2 )
 21          AtomicInteger AtomicInteger로를 = 새로운 새 AtomicInteger ()을,
 22는  
23이다          그동안 (exeFlag) {
 24              IF (atomicInteger.get는 () <= 100 ) {
 25                  executorService.execute ( 새로운 새실행 가능한 () {
 26                      @Override
 (27)                      공공  무효 실행 () {
 28                          에서 System.out.println ( "爬取了第"+ atomicInteger.get () + "网页..." );
29                          atomicInteger.getAndIncrement ();
30                      }
 31                  });
32              } 다른 {
 33                  의 경우 (((ThreadPoolExecutor에) ExecutorService에) .getActiveCount () == 0 ) {
 34                      executorService.shutdown ();
35                      exeFlag = 거짓 ;
(36)                     에서 System.out.println ( "파충류 작업이 완료되었는지" );
 37                  }
 38이다              }
 39  
40             Thread.sleep를 ((  ) 0.1 )
 41이다          }
 42이다      }
 43이다 }

 

추천

출처www.cnblogs.com/zsh-blogs/p/10963106.html