자바 집행자 프레임 워크는 멀티 스레드 응용 프로그램 및 패키지 개발을위한 더 편리한 프레임 워크, 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이다 }