동일 걸릴 다른 사람이 아닌 전체 오류뿐만 아니라 특정 시험없이
구성 클래스 :
패키지 com.tansuo365.test1.config을; 수입 org.springframework.context.annotation.Bean; 수입 org.springframework.context.annotation.Configuration; 수입 org.springframework.core.task.TaskExecutor; 수입 org.springframework.scheduling.annotation.EnableAsync; 수입 org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 수입 java.util.concurrent.ThreadPoolExecutor; @Configuration @EnableAsync 공공 클래스 AsyncConfig { @콩 공개 된 TaskExecutor 된 TaskExecutor () { 실행기위한 ThreadPoolTaskExecutor가된다 = 새로운 새 ) (위한 ThreadPoolTaskExecutor이고; // 세트 코어 스레드 수 executor.setCorePoolSize (5. ); // 설정된 최대 스레드 번호 executor.setMaxPoolSize (10 ); // 큐 용량 세트 (20 인 executor.setQueueCapacity를 ) // 집합 스레드 (초) 활성 시간 executor.setKeepAliveSeconds (60 ); // 기본 스레드 이름 설정 ( "danhao-"executor.setThreadNamePrefix을 ); // 설정이 정책 거부 executor.setRejectedExecutionHandler을 ( 새로운 새로운ThreadPoolExecutor.CallerRunsPolicy ()); // 스레드 풀의 종료 후 가까운 모든 작업에 대한 대기 executor.setWaitForTasksToCompleteOnShutdown ( true로 ) 반환 집행자; } }
참고 새 주석 클래스 구성이 @EnableAsync
제어 층 :
@Async (@RequestMapping "/ getChukuNumber" ) 공공 ListenableFuture <문자열> genBillCode (문자열 유형) 가 발생 예외 { StringBuffer를 billCodeStr는 = 새 의 StringBuffer를 (); billCodeStr.append (chukudanPrefix); billCodeStr.append (DateUtil.getCurrentDateStr ()); 문자열 todayMaxChukuDanNumber = chukuZongService.getTodayMaxChukuDanNumber (); 경우 (todayMaxChukuDanNumber! = null이 ) { billCodeStr.append (StringUtil.formatCode (todayMaxChukuDanNumber)); } 다른 { billCodeStr.append ( "0001" ); } 돌아가 새로운 AsyncResult를 <> (billCodeStr.toString ()); // 반환 billCodeStr.toString (); }
참고 제어 계층과 새로운 주석 @Async의 반환 값의 반환 형식
시작 클래스 같은 :
// @EnableCaching @SpringBootApplication @MapperScan (값 = { "com.xxxxxxxxx.test1.mapper" }) @EnableAsync는 // 비동기 작업을 가능하게 공공 클래스 Test1Application을 { 공공 정적 무효 메인 (문자열 []에 args) { SpringApplication.run (. Test1Application 클래스 , 인수); } }
메모 시작 클래스에 @EnableAsync 코멘트