Spring 의 비동기 작업,스 레 드 탱크,타이머 정시 작업

1.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");
    }
}

좋은 웹페이지 즐겨찾기