스프링 다중 스레드와 시간 작업 상세 설명
1.spring 다중 스레드 작업 사용
spring은 작업 수행기 TaskExecutor를 통해 다중 루틴과 병렬 프로그래밍을 실현합니다.일반적으로 ThreadPoolTaskExecutor를 사용하여 스레드 풀 기반의 TaskExecutor를 구현합니다.
우선 AsyncConfigurer라는 인터페이스를 실현하려면 스레드 탱크를 여는 것이 목적이다
코드는 다음과 같습니다.
package com.foreveross.service.weixin.test.thread;
import java.util.concurrent.Executor;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
/**
*
* @author mingge
*
*/
@Configuration
@ComponentScan("com.foreveross.service.weixin.test.thread")
@EnableAsync
public class TaskExecutorConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor taskExecutor=new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(20);
taskExecutor.setQueueCapacity(25);
taskExecutor.initialize();
return taskExecutor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return null;
}
}
그리고 클래스를 주입하여 당신의 업무를 실현하고 당신의 Bean 방법에서 @Async 주석을 사용하여 비동기적인 임무임을 성명합니다코드는 다음과 같습니다.
package com.foreveross.service.weixin.test.thread;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
/**
*
* @author mingge
*
*/
@Service
public class TaskService {
@Async
public void executeAsyncTask(int i){
System.out.println(" :"+i);
}
@Async
public void executeAsyncTask1(int i){
System.out.println(" 1:"+(i+i));
}
}
마지막으로 테스트를 통해 당신의 실현이 비동기적으로 실행되었다는 것을 볼 수 있습니다.
package com.foreveross.service.weixin.test.thread;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
*
* @author mingge
*
*/
public class Test {
public static void main(String[] args) {
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(TaskExecutorConfig.class);
TaskService taskService=context.getBean(TaskService.class);
for(int i=0;i<20;i++){
taskService.executeAsyncTask(i);
taskService.executeAsyncTask1(i);
}
//
context.close();
}
}
2.spring 정시 작업 사용자바 원생태에서 우리는timer를 사용하면 됩니다. 여기서 스프링에서의 정시 작업의 사용을 설명합니다.
package com.foreveross.service.weixin.test.thread;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration
@ComponentScan("com.foreveross.service.weixin.test.thread")
@EnableScheduling//
public class TaskSchedulerConfig {
}
package com.foreveross.service.weixin.test.thread;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class TimerTaskJob {
@Scheduled(fixedRate=2000)
public void test(){
System.out.println(" :"+new Date().getSeconds());
}
}
package com.foreveross.service.weixin.test.thread;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TestTimer {
public static void main(String[] args) {
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(TaskSchedulerConfig.class);
//context.close();
}
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.