微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在java中的单行代码上设置计时器

如何解决我如何在java中的单行代码上设置计时器

我的要求是..我想在java中的单行代码上设置一个计时器。如果超过时间,它将抛出一个超时异常,并开始在不同的线程中执行该单行代码

这是我的代码

public Object ShootSMTPMail(String subject,String body,Session session,SMTPServerInfo smtpserverInfo,InternetAddress[] mailAddress_TO) throws Exception
    {
        try
        {
            
Message message = new MimeMessage(session);
            
            message.setFrom(new InternetAddress(smtpserverInfo.SMTPUsername));
            
            message.setRecipients(Message.RecipientType.TO,mailAddress_TO);
            
            message.setSubject(subject);
            
            message.setContent(body,"text/html");
            
            Transport.send(message);// I want to set a timer on this line;
         
            
            return true;
        }
               
        catch(Exception e)
        {
            throw e;
        }
        finally
        {
            
        }
    }

基本上在这里我通过 Transport.send() 发送电子邮件,并且这个语句需要一些时间来执行,所以我想向字体端抛出一个超时异常并想向用户展示它需要一些时间执行。同时我想执行 Transport.send(message);这条线在不同的线程中,什么时候我会收到来自 Transport.send(message) 的响应;这次执行我将它发送到字体结束。其实我想让这整个过程异步。请帮帮我..

解决方法

在 Java 中,这样的事情通常被实现为具有内部线程池的服务。

类似的东西:

public class EmailSenderService {

  private ExecutorService threadPool = Executors.new***Pool();

  public Future<?> send(Message message) {
    return threadPool.submit(() -> Transport.send(message));
  }

  public void shutDownService() {
    threadPool.shutdownNow();
    ...
  }
}

这里的 Transport.send(message) 是在另一个线程中异步执行,而 Future 返回的 send() 实例允许调用者检查任务是否完成,取消任务等。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。