इस प्रकार Spring's documentation के लिए रास्ता TaskExecutor का उपयोग करने के अनुसार किया जाता है के रूप में:मैं एक स्प्रिंग टास्क एक्स्सेक्टर निर्मित थ्रेड कैसे स्वत: कर सकता हूं?
import org.springframework.core.task.TaskExecutor;
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));
}
}
}
हालांकि, अगर MessagePrinterTask निर्भरता वे वसंत द्वारा विन्यस्त किया जा नहीं करेंगे क्योंकि हम वसंत के संदर्भ के बाहर हमारे सेम instantiating कर रहे हैं (कम से कम है कि autowired है मैं इसे कैसे समझता हूं) भले ही वसंत वास्तविक धागा निर्माण प्रदान करे। अगर संदेश प्रिंटरटास्क को स्वायत्त निर्भरताएं थीं तो हम उन्हें वसंत कैसे प्राप्त कर सकते हैं? मैं कोई लाभ नहीं हुआ निम्नलिखित संशोधित उदाहरण की कोशिश की (और हाँ, autowiring ठीक से सक्षम है):
एक:
import org.springframework.core.task.TaskExecutor;
public class TaskExecutorExample {
@Component
private class MessagePrinterTask implements Runnable {
@Autowired
private autoWiredDependency;
public void run() {
autoWiredDependency.doNotThrowNullPointerExceptionPlease();
}
}
private TaskExecutor taskExecutor;
public TaskExecutorExample(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
}
public void printMessages() {
for(int i = 0; i < 25; i++) {
taskExecutor.execute(new MessagePrinterTask());
}
}
}
त्वरित उत्तर बिजू के लिए धन्यवाद। सुझाव ए। मैं वर्तमान में कर रहा हूं लेकिन यह थोड़ा परेशान है क्योंकि मुझे एक वर्ग में एक कन्स्ट्रक्टर प्लस ऑटोवायर निर्भरता बनाए रखना है जो उनका उपयोग नहीं कर सकता है। मैंने सुझाव बी देखा है। लेकिन मुझे यकीन नहीं है कि यह कार्य पूरा करने के लिए सबसे अधिक वसंत-तरीका है या नहीं। हालांकि धन्यवाद! – Jorge
अब मैं @ कॉन्फिगर करने योग्य का उपयोग कर रहा हूं क्योंकि यह विकल्प ए को धड़कता है। मेरा आवेदन बहुत सारे थ्रेड को तुरंत चालू नहीं करता है, इसलिए यह पर्याप्त है। – Jorge