1. 작업 상속 호출 가능, Runable
수입 java.util.concurrent.Callable; 수입 java.util.function.Consumer; 공공 클래스 CallbackableFeatureTask는 <V>는 구현 호출 가능 <V> ,의 Runnable을 { 전용 호출 가능 <V> mainProcess; 개인 소비자 <V> callbackFunction; @보수 공공 V의 ()를 호출하면 발생 예외 { 결과 V = mainProcess.call (); callbackFunction.accept (결과); 반환 결과를; } 공개 CallbackableFeatureTask (호출 가능 <V> 호출 소비자 <V> callbackFunction) { 이 .mainProcess = 호출; 이 .callbackFunction = callbackFunction; } @보수 공공 무효 실행 () { 시도 { 요구(); } 캐치 (예외 예) { } } }
2. 시험 코드
공용 클래스 CallbackableFeatureTaskTest { 개인 정적 ExecutorService를 ExecutorService를 Executors.newFixedThreadPool = (5 ); 공공 정적 무효 메인 (문자열 []에 args) { CallbackableFeatureTask <문자열> 작업 = 새로운 CallbackableFeatureTask <> ( 새 호출 가능 <문자열> () { @보수 공공 문자열 ()에 대한 호출이 발생 예외 { 반환 "안녕하세요 중국을!" ; } } (문자열 V) -> { 에서 System.out.println (V); }); // 직접 사용 스레드의 Runnable 1. 지원 새로운 새로운 스레드 (작업) .start (); // 주는, Callable 풀링 2. 지원 스레드 미래 <문자열> ExecutorService.submit 결과 = ((주는, Callable <문자열> ) 작업) 은 try를 { 에서 System.out.println ( "결과가 스레드 풀을 사용하여"+ result.get ()); } 캐치 (예외 예) { }
executorService.shutdown ();
}
}
결과는 다음과 같다 :
! 헬로 중국
헬로 중국!
그 결과는 스레드 풀 사용 : 안녕하세요 중국!
여기에 단지 교육 데모를하고있다
늦은 점을 최적화 할 수 있습니다 : 미래 <V가> 인터페이스 등 FutureTask을 상속 실현되는