最近帮同学做一个系统 涉及到email的定时发送现在我已经知道如何发送一封简单的email了我想请教一下: 如何实现 “定时”??ps: 代码是次要的, 望大家把思想给指点一下 ,另外该系统大约每天发送数万条,效率不要太低, 最好是半个小时或者更短的时间内搞定,别到第二天了第一天的email还没发送完谢谢
解决方案 »
- 可以在继承JPanel的类中在public void paintComponent(Graphics g)方法中添加背静图片吗?(应用程序中)
- 简单问个socket的问题
- 能否解释下何为对象序列化?
- 为什么非要加个default呢?
- 很奇怪的问题 大家来解决!!!!!!!
- 问题!
- 求教高手点拨“一个3W行代码工程量的Login”步骤的错误排查的经验。
- 一个初学者的问题,在一JAVA文件中导入另一个类为什么老是出错呀??
- 一个奇怪的问题,但很简单!!!
- 用visualCafe3开发的Applet ,打包成jar文件时,怎么包括symantec.* 等进入?
- java读取PDF文档/word文档
- java中split的一个小问题
嗯 , 问题是系统不是用java写的。 汗一个。。没相当大家给的解决思想都是具体的技术方案
了然。实现定时任务,分两块:第一,定时,已经讲过,可以在不同层面上来实现,看你自己怎么选择,具体实现LZ要自己查文档。第二,任务本身,在这里是发邮件,这个你自己已经了然,可以看看 http://commons.apache.org/email/原理应该就这些了,再细就到代码层面上了 :)
或者起一个Thread,sleep指定的时间后激活就ok了
呵呵, 我昨晚也测了下 半小时发万封 不太可能啊。
我用代理服务器发的, 用的腾讯的
用我的qq给我自身发, 在我收件箱里啊
然后往我 gmail里发了封 也是 收件箱。 就这些了
不过具体的部署起来我就不太了解那边的情况了。 我只帮我同学在代码层面上写一个接口
到时候他直接用就是了
这个思想不错。 昨晚用php实现的 , 原理跟你说的差不多
同时跑上50个线程
把所有的邮件放到hashmap中 然后用定时发送的时间作为 key
线程要做的就是 对map按照时间进行 get 就行了
把get出来的发送出去按你说的 半小时就算发送 9000封
也就是500毫秒发送一封量不算太大50个线程都有点多
/**
* 加载自动注册任务线程
*/
private void initAutoRegister(){
AutoRegister autoRegister = new AutoRegister();
Timer autoTimer = new Timer("autoRegister");
autoTimer.schedule(autoRegister, 0,60*60*1000);
}
public class AutoRegister extends TimerTask {
Logger logger = Logger.getLogger(AutoRegister.class); @Override
public void run() {
RegisterSites registerSites = RegisterSites.getInstance();
String autotime = registerSites.getAutotime();
String useable = registerSites.getUseable();
if (autotime != null && autotime.trim().length() > 0 && useable != null
&& useable.equals("true")) {
String[] time = autotime.split(":");
Calendar calendar = Calendar.getInstance();
int hour = Integer.parseInt(time[0].trim());
calendar.set(Calendar.HOUR_OF_DAY, hour);
if (time.length > 1) {
int mimute = Integer.parseInt(time[1]);
calendar.set(Calendar.MINUTE, mimute);
}
Date now = new Date();
long nowtime = now.getTime();
Date excuDate = calendar.getTime();
long preparetime = excuDate.getTime();
if (preparetime <= nowtime) {// 如果时间到达了设定时间则执行发布任务
logger.info("开始制定注册账号任务");
RegistersiteDAO registersiteDAO = new RegistersiteDAO();
int result = registersiteDAO.updateRegsiter();//布置注册任务
if(result>0){
logger.info("自动注册账号任务制定成功");
}
}
}
}}
其他java.util.Timer
spring