복붙노트

[SPRING] TaskExecutor 예제를 사용한 좋은 스프링 스레딩? [닫은]

SPRING

TaskExecutor 예제를 사용한 좋은 스프링 스레딩? [닫은]

트랜잭션 관리를 위해 Spring을 사용하는 Java 애플리케이션에서 스레딩을 구현하는 방법에 대한 핸들을 얻으려고합니다. Spring 문서에서 TaskExecutor 섹션을 찾았습니다. ThreadPoolTaskExecutor는 내 필요에 맞을 것처럼 보입니다.

그러나 나는 그것을 사용하는 방법에 대해 갈 생각이 없습니다. 나는 행운이없는 지금 좋은 예제를 찾고있었습니다. 누구든지 나를 도울 수 있다면 나는 그것을 감사 할 것입니다.

해결법

  1. ==============================

    1.꽤 간단합니다. 아이디어는 bean 인 executor 객체를 가지며, 새로운 객체를 실행하고자하는 객체 (새 스레드에서)로 전달됩니다. 좋은 점은 Spring 구성을 변경하여 어떤 유형의 태스크 실행 프로그램을 사용 할지를 수정할 수 있다는 것입니다. 아래의 예제에서는 ClassWithMethodToFire 예제 클래스를 가져 와서 Runnable 객체로 래핑하여 화재를 처리합니다. 당신은 실제로 당신 자신의 클래스에서 Runnable을 구현할 수 있고, execute 메소드에서 classWithMethodToFire.run ()을 호출 할 수 있습니다.

    꽤 간단합니다. 아이디어는 bean 인 executor 객체를 가지며, 새로운 객체를 실행하고자하는 객체 (새 스레드에서)로 전달됩니다. 좋은 점은 Spring 구성을 변경하여 어떤 유형의 태스크 실행 프로그램을 사용 할지를 수정할 수 있다는 것입니다. 아래의 예제에서는 ClassWithMethodToFire 예제 클래스를 가져 와서 Runnable 객체로 래핑하여 화재를 처리합니다. 당신은 실제로 당신 자신의 클래스에서 Runnable을 구현할 수 있고, execute 메소드에서 classWithMethodToFire.run ()을 호출 할 수 있습니다.

    여기에 아주 간단한 예가 있습니다.

    public class SomethingThatShouldHappenInAThread {
         private TaskExecutor taskExecutor;
         private ClassWithMethodToFire classWithMethodToFire;
    
         public SomethingThatShouldHappenInAThread(TaskExecutor taskExecutor,
                                                   ClassWithMethodToFire classWithMethodToFire) {
              this.taskExecutor = taskExecutor;
              this.classWithMethodToFire = classWithMethodToFire;
         }
    
         public void fire(final SomeParameterClass parameter) {
              taskExecutor.execute( new Runnable() {
                   public void run() {
                        classWithMethodToFire.doSomething( parameter );
                   }
              });
         }
    }
    

    여기 스프링 콩이 있습니다 :

    <bean name="somethingThatShouldHappenInAThread" class="package.name.SomethingThatShouldHappenInAThread">
         <constructor-arg type="org.springframework.core.task.TaskExecutor" ref="taskExecutor" />
         <constructor-arg type="package.name.ClassWithMethodToFire" ref="classWithMethodToFireBean"/>
    </bean>
    
    <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
         <property name="corePoolSize" value="5" />
         <property name="maxPoolSize" value="10" />
         <property name="queueCapacity" value="25" />
    </bean>
    
  2. from https://stackoverflow.com/questions/852743/any-good-spring-threading-with-a-taskexecutor-examples by cc-by-sa and MIT license