मैं एक अजीब मुद्दे से उलझन में हूं। असल में स्थिति इस तरह है। मैंने अपनी कक्षा में चलने योग्य लागू किया, मैं कक्षा को एक नए थ्रेड में पास करता हूं, मैं कक्षा के भीतर अपनी run()
विधि को ओवरराइड करता हूं जो चलने योग्य लागू करता है और फिर मैं धागा शुरू करता हूं। हालांकि, मेरी start()
विधि कभी भी मेरी run()
विधि को कॉल नहीं करती है। मैंने फ़ोरम खोजे हैं लेकिन मुझे एक और समान समस्या नहीं मिल रही है।थ्रेड स्टार्ट रन नहीं है
public class EmailManager implements Runnable {
PortalManagementSBLocal pmbr= this.lookupPortalManagementSB();
Thread runner;
String emailServerName = "";
String smtpPort = "";
String emailTo = "";
String emailFrom = "";
String mailer = "JavaMailer";
String subject = "";
String message = "";
public EmailManager() {
}//default constructor
public EmailManager(String emailTo, String subject, String message){
this.emailTo=emailTo;
this.subject = subject;
this.message = message;
//need to make this dynamic
this.emailFrom = pmbr.getEmailFrom();
this.emailServerName = pmbr.getEmailServerName();
this.smtpPort = pmbr.getEmailSMTPPort();
//runner = new Thread(this,"Email");
runner = new Thread(this);
runner.start();
System.out.println("***** Email Thread running...");
}
@Override
public void run(){
sendEmail(); //This is never called
}
वास्तव में किसी भी मार्गदर्शन का स्वागत करेंगे:
नीचे मेरी नमूना कोड है! अनेक अनेक धन्यवाद!
और आप निश्चित हैं कि शुरू() कहा जा रहा है? क्या आप मेल() को भेजने से पहले रन() की शुरुआत में एक लॉग संदेश जोड़ सकते हैं? –
क्या आप व्युत्पन्न प्रकार के ईमेल प्रबंधक का निर्माण कर रहे हैं? –
गंदा डिजाइन, थ्रेड को तुरंत चालू करना और इसे कन्स्ट्रक्टर में शुरू करना। दौड़ की स्थिति उत्पन्न करने के लिए लगभग निश्चित है। – Qwerky