Je suis nouveau à Spring et j'essaie d'implémenter un programme multi-thread. Selon la documentation de printemps dans ce lien, https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html, fils peuvent être créés comme,Création de threads avec Spring
public class TaskExecutorExample {
private class MessagePrinterTask implements Runnable {
private String message;
public MessagePrinterTask(String message) {
this.message = message;
}
public void run() {
System.out.println(message);
}
}
private TaskExecutor taskExecutor;
public TaskExecutorExample(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void printMessages() {
for(int i = 0; i < 25; i++) {
taskExecutor.execute(new MessagePrinterTask("Message" + i));
}
}
}
Mais le fil de discussion est créé avec un « nouveau » mot-clé et le haricot est pas géré par Spring. Par conséquent, il ne peut accéder à aucun composant Autowired. Un travail autour de ce problème peut être Autowire le composant dans la classe outside et le passer à la classe thread dans son constructeur.
Mais existe-t-il un autre moyen approprié de faire cela, où Spring peut prendre soin d'initialiser les threads, afin que les threads puissent avoir accès à tous les composants câblés automatiquement.
L'application que je crée devra créer un nouveau thread pour chaque nouveau message qu'elle reçoit d'une file d'attente.
Salut. Ma question était sur la façon de créer un fil lors de la soumission au pool de threads. Si vous utilisez 'new Thread()' pour en créer un, puis le soumettre au pool de threads, Spring ne gère pas l'objet thread que nous avons créé. Alors comment créer une instance de thread pour qu'elle soit gérée au printemps. – samo
Ajoutez juste '@ Component' à votre Thread avec' @Scope ("prototype") '. Ensuite vous pouvez '@ Autowired' votre Thread et exécuter' taskExecutor.execute (sampleThread) 'comme ça. –
@samo: juste au cas où vous auriez encore besoin de renvoyer l'échantillon. Pls voir 3. Spring Thread Pool + Spring exemple de haricot géré: https://www.mkyong.com/spring/spring-and-java-thread-example/ –