자세한 내용은 스레드를 방문 www.itkc8.com을
풀 도구 스레드 :
java.util.concurrent의를 가져옵니다. *;
Public 클래스 CommonThreadPool {
개인 정적 간부 ExecutorService를 사용해, 새로운 ThreadPoolExecutor = (50, 100, 0L,
) 10000 (<Runnable를> TimeUnit.MILLISECONDS 새로운 LinkedBlockingQueue 등,
새로운 ThreadPoolExecutor.CallerRunsPolicy ());
공공 정적 무효 실행 (명령의 Runnable) {
exec.execute (커맨드);
}
// 하위 스레드 실행하는 Future.get 끝 ()는 null이 완료되지 않을 경우, 메인 스레드가 기다리고 차단합니다
; 공공 정적 미래 (실행 가능한 명령)을 제출 {반환 exec.submit (명령)}
자식 스레드를 반환 // 미래에 반환 된 값에서 얻을 수 있습니다 :하는 Future.get ();
공공 정적 미래 (주는, Callable 명령) {제출
반환 exec.submit (명령);
}
}
테스트 클래스를 :
수입 인 java.util.ArrayList;
수입은 java.util.List;
수입 java.util.concurrent.ExecutionException;
수입 java.util.concurrent.Future;
공용 클래스 ThreadTest로 {
@Test
공공 무효을 ThreadTest () {
목록 <미래> futureList = 새로운 ArrayList를 <> ();
경우 (나는 <4] I = 0 int로 난 ++) {
INT finalI = 1;
미래의 미래 = CommonThreadPool.submit (() -> {
{시도
에서 System.out.println (finalI + "我执行了...");
에 Thread.sleep (5000L)
에서 System.out.println (finalI + "我执行完了... ");
} 캐치 (예외 : InterruptedException 전자) {
e.printStackTrace ();
}
});
futureList.add (미래);
}
뭔가에 // 메인 스레드 작업, 자식 스레드가 비동기 적으로 실행 할 수 있습니다.
MainThreadOtherWork ();
에서 System.out.println을 ( "서브 이제 스레드 완료를 기다리는 중입니다.");
// 메인 스레드 다른 작업이 완료, 아이 thread의 종료를 기다리고, 전화 방법하는 Future.get () 계열 일 수있다.
//
{은 try
(미래 미래 : futureList)에 대한 {
에서 System.out.println (하는 Future.get ());
}
} 캐치 (예외 : InterruptedException | ExecutionException E) {
e.printStackTrace ();
}
은 try {
에서 System.out.println ( "처리 가. ");
에 Thread.sleep (1000)
에서 System.out.println ("두 개의 프로세스 ");
에 Thread.sleep (1000)
에서 System.out.println ("처리 세 ");
에 Thread.sleep (1,000 )
에서 System.out.println ( "네 방법.");
에 Thread.sleep (1000)
에서 System.out.println ( "모든 처리가 완료된다.");
} 캐치 (예외 : InterruptedException 전자) {
e.printStackTrace ();
}
}
정적 무효 mainThreadOtherWork 비공개 () {
에서 System.out.println는 ( "메인 쓰레드가 작동하기");
은 try {
에 Thread.sleep (2000L)를;
} 캐치 (예외 : InterruptedException E) {
e.printStackTrace를 ();
}
에서 System.out.println을 ( ;) "메인 스레드 완료"
}
}
결과 :
주 스레드는 작업을 시작
내가 수행 0. . .
2 내가 수행. . .
3 내가 수행. . .
1 내가 수행. . .
메인 스레드가 작업을 완료
자식 스레드 기다립니다.
2 내가 실행을 완료했다. . .
3 나는 실행을 완료했다. . .
(1) 나는 실행을 완료했다. . .
0 나는 실행을 완료했다. . .
널
널
널
널
프로세스가.
티탄. 처리
가공 III.
처리 IV.
모든 처리가 완료된다.