Java邮件发送阻塞线程
2017-03-31 00:00
916 查看
Java邮件发送阻塞线程
标签(空格分隔): 邮件 阻塞 线程[TOC]
1. 背景与问题描述
线上的一个定时后台,每10分钟处理一次。后台具有排它性,出现告警数据时会发送邮件。发送邮件使用JavaEE5的jar包。后台在早上9点51分钟的时候,发送告警邮件时阻塞线程,一直卡在发送的地方,不能正常结束。导致后续的执行无法继续进行。数据积压发现问题。2. 问题排查和重现
之前遇到过类似的一个问题,HTTP请求时使用默认的超时时间设置,导致线程阻塞,和这个问题的表象非常像。于是乎,去看邮件发送的代码,果然没有设置超时时间。为了复现问题,做了以下两种情况的测试:
阻止JAVA线程的网络连接,调用发送邮件的方法:
此时线程一直处于等待状态,5分钟后,恢复网络连接,发送邮件的线程依然阻塞。
阻止JAVA线程的网络连接,设置连接超时时间和读取超时时间,调用发送邮件的方法:
此时线程到超时时间,会自动抛出异常,线程结束。
3. 解决方案
直接上代码:props.put("mail.smtp.connectiontimeout", "10000"); props.put("mail.smtp.timeout", "10000");
把上述两句代码,加到发送邮件代码里面,问题即可解决。
相关文章推荐
- JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介,线程邮件发送实例
- 如何将java在DOMINO中发送的邮件带上附件
- 用java发送邮件
- java开发的邮件发送程序
- 用Java发送图文并茂的HTML邮件
- 用Java类实现JavaMail发送邮件的例子-Java基础-Java-编程开发
- 我的Java学习路二:邮件发送
- Java邮件发送程序(可以同时发给多个地址、可以带附件)
- java发送邮件
- 用java开发Email工具之发送邮件 (1)作者:冯睿
- Quartz应用----发送邮件工作调度Java(转)
- 用Java发送图文并茂的HTML邮件
- 用java发送lotus邮件一个完整例子
- 用JSP+SERVLET实现的JAVAMAIL发送邮件
- [JAVA100例]045、使用SMTP协议发送邮件(java100例)
- 用Java编写邮件发送程序
- 用java开发Email工具之发送邮件 [推荐]
- JSP下建立java发送邮件
- Java采用SMTP协议发送邮件
- java 线程的阻塞 暂停 启用