2016-04-08 21 views
1

Ben java mail api kullanarak posta gönderen aşağıdaki program var, şimdi bu şimdi geliştirdiğim basit bir program şu anda geliştirmek istiyorum 5 farklı iş parçacığı bağımsız olarak istediğim executorframework kullanarak paralel yürütme bu programımı tetiklemelidir ancak aynı anda 5 farklı iş parçacığının aynı anda tetiklemesi gerekirprogramı aynı anda farklı konulara göre posta göndermek için paralel işleme ile

beş farklı iş parçacığı olduğunu söyleyelim t1, t2, t3, t4 ve t5 sonra hepsi bağımsız olarak(), şimdi rite çağırıyor ama aynı zamanda

java kodu benim

public class SSendEmail { 

    public static void main(String [] args) throws Exception, IOException, Exception{ 

     String smtpHost = "xxx"; 
     String mailSmtpPort = "000"; 
     String mailTo[] = {"[email protected]" }; 
     String mailCc[] = {"[email protected]" }; 






     xxsendmail(mailTo, mailCc, "sendername", 
       "testsubject.", "testsubject..", smtpHost , mailSmtpPort); 


    } 

cevap

0

Bir ScheduledExecutorService kullanır ve bunu böyle adlandırırsınız.

ScheduledExecutorService exec = Executors.newScheduledThreadPool(amount); 
for (int i = 0; i < amount; i++) { 
    exec.schedule(yourMailSendingRunnable, delay, TimeUnit.MILLISECONDS); 
} 

İhtiyaçlarınıza hesaba amount, yourMailSendingRunnable ve delay değiştirmelisiniz.

+0

@ Cooki3Tube..Sıkış cevabınız için teşekkür ederiz, kod parçamı dönüştürdüğünüzü söyleyin ve bana 5 farklı iş parçacığı istediğinizi gösterin ve tüm iş parçacığı eşzamanlı olarak xxsendmail yöntemine bir çağrı yapın. – sss

0

tek şartı 5 ipler eşzamanlı çalışması gerektiğidir sürece, böyle bir şey ile yapılır: daha fazla kontrol gerektiğinde

public class SSendEmail implements Runnable { 

    public static void main(String [] args) throws Exception, IOException, Exception{ 

     for(int i=0;i<5;i++) { 
      new Thread(new SSendMail()).start(); 
     } 
    } 

    public void run() { 

    String smtpHost = "xxx"; 
    String mailSmtpPort = "000"; 
    String mailTo[] = {"[email protected]" }; 
    String mailCc[] = {"[email protected]" }; 

    xxsendmail(mailTo, mailCc, "sendername", 
      "testsubject.", "testsubject..", smtpHost , mailSmtpPort); 
    } 
} 

Bir ExecutorService kullanacaktır. Örneğin. ThreadPooleExecutor, yeni iş parçacığına devam ettiğinizde eşzamanlı çalışan iş parçacığı sayısını sınırlamak için, ancak aynı anda 10 iş parçacığının çalıştığını sınırlamak istediğinizde.

+0

Sizinle aynı fikirdeyim, ama aynı zamanda beş bağımsız iş parçacığının xxsendmail adlı yöntemimi de aynı anda çağırmasını istiyorum, lütfen yukarıdaki kodun 5 bağımsız iş parçacığının xxsendmail adlı yöntemimi çağırdığından emin olmasını tavsiye edin – sss

+0

@sss: Try Peter'ın kodu ve kendiniz görün. Umarım e-posta sağlayıcınız sizi bir e-posta spameri olarak engellemez. –

+0

@Gilbert de test posta kutusu kurmak için endişelenmenize gerek yok çünkü benim tek endişem, tüm iş parçacıkları bağımsız olmalıdır artı aynı anda aynı zamanda yöntemle çağırmalısınız hepsi – sss

İlgili konular