SendMailTimer.java 3.5 KB
package com.espeed.yxy.timer;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.espeed.yxy.pojo.YxySendMailMaster;
import com.espeed.yxy.pojo.YxySendSmtpInfo;
import com.espeed.yxy.service.YxySendMailService;
import com.espeed.yxy.tool.LogsTool;

/**
 * 程序名称:    	EspeedMail_时速邮箱
 * 程序版本:    	V1.0
 * 作    者:    	深圳市科飞时速网络技术有限公司(0755-88843776)
 * 版权所有:    	深圳市科飞时速网络技术有限公司
 * 技术支持:    	Tech@21gmail.com
 * 单元名称:    定时器主方法(营销游)
 * 开始时间:    	2013.12.09
 * 程 序 员:    	谢勇
 * 最后修改:    
 * 备    注:		如需修改请通知程序员    
 */
public class SendMailTimer {
	
	private YxySendMailService yxysendmailservice;
	public static String nowtimer="";
	
	/**定时器运行方法*/
	public void timerMethod(){
			
		try {
			System.out.println("新任务开始进来了!");
			ThreadPoolTask s=ThreadPoolTask.getMethodInstance();
			
			//当前线程量
			System.out.println("当前线程量:"+s.getThreadNum());
			
			//变量定义区
			//int smtpnum=0;
			//int mailnum=0;
			
			//获取所有smtp
			List<YxySendSmtpInfo> smtpinfoList= yxysendmailservice.findSmtpInfoSetNum();
			//yxysendmailservice.updatesmtpstatus();//更改选定smtp状态
			
			//将smtp打乱
			List<YxySendSmtpInfo> newsmtpList=getRandom(smtpinfoList);
			//smtpnum=newsmtpList.size();
			System.out.println("获取到了"+newsmtpList.size()+"个SMTP");
			//判断是否存在SMTP
			if(newsmtpList.size()>0){
//				//判断是否有可待发邮件(指定条)
//				List<YxySendMailMaster> mailList=yxysendmailservice.findByMailNum(smtpnum);
//				mailnum=mailList.size();
//				System.out.println("新加入"+mailnum+"个邮件!");
//				if(mailnum>0){
//					//获取smtp后缀配置信息
//					//List<YxySmtpSuffixSet> smtpsuffixsetList=yxysendmailservice.findAllSmtpSuffixSet();
//					//调用线程池
//					//s.getResult(yxysendmailservice, newsmtpList, mailList, smtpsuffixsetList);
//					s.getResult(yxysendmailservice, newsmtpList, mailList);
//				}else{
//					System.out.println("没有待发邮件!");
//				}		
				//调用线程池
				s.getResult(yxysendmailservice, newsmtpList);
			}else{
				System.out.println("没有可用SMTP!");
			}
			
		} catch (Exception e) {
			System.out.println("定时器异常了...");
			e.printStackTrace();
			//写入日志
			StringWriter sw = new StringWriter();
			e.printStackTrace(new PrintWriter(sw, true));
	        String str = sw.toString();
			LogsTool.erroLogs(str);
		}
	}

	
	//将集合打乱
	 public static List<YxySendSmtpInfo> getRandom(List<YxySendSmtpInfo> value){		
		List<YxySendSmtpInfo> newSmtpList=new ArrayList<YxySendSmtpInfo>();
        int n = value.size();  
        Random rand = new Random();  
        boolean[] bool = new boolean[n];         
        int num =0;  
        for (int i = 0; i<n; i++){  
            do{  
               //如果产生的数相同继续循环  
               num = rand.nextInt(n);      
            }while(bool[num]);       
            bool[num] =true;  
            newSmtpList.add(value.get(num));
        }
		return newSmtpList;           
	 }
	//------------------get set--------------------
	public YxySendMailService getYxysendmailservice() {
		return yxysendmailservice;
	}

	public void setYxysendmailservice(YxySendMailService yxysendmailservice) {
		this.yxysendmailservice = yxysendmailservice;
	}

}