Spring 의 비동기 작업,스 레 드 탱크,타이머 정시 작업
비동기 설정 열기(@EnableAsync 주석 지정 또는 탭 설정)
1.자바 주석 사용:
첫 번 째 단계:클래스 설명 전에@EnableAsync 주석 을 사용 하여 비동기 호출 기능 을 엽 니 다.
두 번 째 단계:Public AsyncTaskExecutor taskExecutor()방법 은 자신의 스 레 드 풀,스 레 드 풀 접두사'Anno-Executor'를 사용자 정의 합 니 다.정의 되 지 않 으 면 시스템 의 기본 스 레 드 풀 을 사용 합 니 다.
@EnableAsync //
public class AsyncApplicationWithAnnotation {
/* */
/**
*
* @return
*/
@Bean
public AsyncTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setThreadNamePrefix("Anno-Executor");
executor.setMaxPoolSize(10);
//
executor.setRejectedExecutionHandler(new RejectedExecutionHandler() {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
// .....
}
});
return executor;
}
}
2.XML 로 설정:
첫 번 째 단계:탭 정의 스 레 드 탱크 사용
두 번 째 단계:탭 을 사용 하여 비동기 스 레 드 풀 설정 을 시작 합 니 다.
다음 spring-async.xml 설정:
스 레 드 탱크 에 대한 거부 정책 은 다음 을 참고 하 십시오.
스 레 드 탱크--거부 정책 RejectedExecutionHandler
비동기 작업 작성(@Async 주석 지정)
1.일반 자바 클래스 를 작성 하고@Async 주석 으로 설정 합 니 다.
간단 한 단계 만 있 으 면 주석 방법 을 실행 할 때 자동 으로 Spring 프레임 워 크 에서 비동기 작업 을 수행 할 수 있 습 니 다.
p
ackage tech.bbwang.springtask.scheduled.demo;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class ScheduledTaskExample {
public ScheduledTaskExample(){
}
@Async
public void printTime(){
System.out.println((new Date()).toString());
}
}
2.스 레 드 탱크
스 레 드 탱크 설정
가장 간단 한 형식 은 spring 프로필 에 설정 을 추가 하면 됩 니 다.
이 설정 을 추가 하려 면 Spring 프로필 의 머리 에 아래 제약 파일 을 추가 해 야 합 니 다(task 관련 네 임 스페이스)
스 레 드 풀 사용
스 레 드 탱크 xmlExecutor 는 Spring 의 bean 으로 존재 하 며 필요 한 곳 에 주입 할 수 있 습 니 다.
예 를 들 면:
스 레 드 풀 을 사용 하 는 클래스 TaskExecutor Example 을 정의 합 니 다.이 클래스 는 스 레 드 풀 을 사용 하여 현재 시간 을 인쇄 하 는 10 개의 작업 을 수행 합 니 다.
package tech.bbwang.springtask.demo;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Component;
import tech.bbwang.App;
import java.util.HashMap;
import java.util.Map;
/**
*
*/
@Component
public class TaskExecutorExample
{
private TaskExecutor taskExecutor;
public TaskExecutorExample(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void printMessages() {
for(int i = 0; i <10; i++) {
taskExecutor.execute(new Runnable(){
public void run(){
System.out.println((new Date()).toString());
}
});
}
}
}
Spring 프로필 설정:
3.타이머 와 정시 작업
타이머 정의
spring 프로필:
정시 작업 정의
spring 프로필:
corn 표현 식 에 대해 참고 할 수 있 습 니 다:
Cron 표현 식 생 성기
cron 표현 식 상세 설명
정시 작업 클래스 정의
package tech.bbwang.springtask.scheduled.demo;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class ScheduledTaskExample {
public ScheduledTaskExample(){
}
@Async
public void printTime(){
System.out.println((new Date()).toString());
}
}
정의 실행 클래스
사실 스프링 설정 으로 실행 문 제 를 완전히 해 결 했 습 니 다.스프링 설정 을 실행 하 는 주 함수 만 주면 됩 니 다.
package tech.bbwang;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.concurrent.CountDownLatch;
public class SpringAsyncTask {
public static void main( String[] args )
{
new ClassPathXmlApplicationContext("spring-async*.xml");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.