threadpooltaskexecutor thread taskexecutor example ejemplo async java multithreading spring executor

java - example - ¿Algún buen Spring threading con un TaskExecutor ejemplos?



spring boot threadpooltaskexecutor (1)

Es bastante simple La idea es que usted tenga un objeto ejecutor que sea un bean, que se pasa a cualquier objeto que quiera lanzar la nueva tarea (en un nuevo hilo). Lo bueno es que puedes modificar qué tipo de ejecutor de tareas usar solo cambiando la configuración de Spring. En el siguiente ejemplo, tomo una clase de ejemplo (ClassWithMethodToFire) y la envuelvo en un objeto Runnable para hacer el fuego; también podría implementar Runnable en su propia clase, y luego, en el método de ejecución, simplemente llamaría classWithMethodToFire.run() .

Aquí hay 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 frijoles 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>

Estoy tratando de entender cómo implementar subprocesos en una aplicación Java que utiliza Spring para la gestión de transacciones. He encontrado la sección TaskExecutor en la documentación de Spring , y parece que ThreadPoolTaskExecutor se ajustaría a mis necesidades;

ThreadPoolTaskExecutor

Esta implementación solo se puede utilizar en un entorno Java 5, pero también es la más utilizada en ese entorno. Expone las propiedades del bean para configurar un java.util.concurrent.ThreadPoolExecutor y lo envuelve en un TaskExecutor. Si necesita algo avanzado, como un ScheduledThreadPoolExecutor, se recomienda que use un ConcurrentTaskExecutor en su lugar.

Sin embargo no tengo idea de cómo usarlo. He estado buscando buenos ejemplos por un tiempo sin suerte. Si alguien me puede ayudar, se lo agradecería.