有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过并行处理,使不同线程同时发送邮件的java程序

我有下面的程序,它使用java mail api发送邮件,这是我开发的一个简单的程序,我想通过使用executorframework来修改并行执行,我希望5个不同的线程独立地触发我的程序,但是这5个不同的线程应该同时触发

假设有五个不同的线程t1、t2、t3、t4和t5,那么它们都应该独立地命中我的函数,这是main(@)现在正在调用rite,但同时

下面是我的java代码

public class SSendEmail {

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

        String smtpHost = "xxx";
        String mailSmtpPort = "000";
        String mailTo[] = {"sart@wer.com" };
        String mailCc[] = {"sart@wer.com" };






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


    }  

共 (2) 个答案

  1. # 1 楼答案

    只要您的唯一要求是5个线程应同时工作,您就可以完成以下操作:

    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[] = {"sart@wer.com" };
        String mailCc[] = {"sart@wer.com" };
    
        xxsendmail(mailTo, mailCc, "sendername",
                "testsubject.", "testsubject..", smtpHost , mailSmtpPort);
      }  
    }
    

    当需要更多控制时,您将使用Executor服务。例如ThreadPooleExecutor当您有连续的新线程时,限制并发运行的线程数,但您希望限制,例如,同时运行10个线程

  2. # 2 楼答案

    我想你会用ScheduledExecutorService这样称呼它

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

    你应该替换amountyourMailSendingRunnabledelay来满足你的需求