¿Fue útil?

Solución

Es muy sencillo. La idea es que usted tiene un objeto ejecutor que es un grano, que se pasa en cualquier objeto que quiere despedir a la nueva tarea (en un nuevo hilo). Lo bueno es que se puede modificar el tipo de ejecutor de tareas para usar con sólo cambiar la configuración de la primavera. En el siguiente ejemplo que estoy tomando alguna clase de ejemplo (ClassWithMethodToFire) y envolviéndolo en un objeto Ejecutable para hacer el fuego; también se puede aplicar en realidad Ejecutable en una clase de su propio, y luego en el método de ejecución que le acaba de llamar classWithMethodToFire.run().

Este es un ejemplo muy simple.

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 );
               }
          });
     }
}

Y aquí están los granos de primavera:

<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>
scroll top