主要是用到ExecutorService。采用了单例模式,线程池。
/**异步发送微信消息
** @date 2016年5月13日
*/
public class ThreadSendWxMessage {
private static final Logger log = LoggerFactory.getLogger(ThreadSendWxMessage.class);
private static final ThreadSendWxMessage sendWxMessage = new ThreadSendWxMessage();
// 创建一个大小为n的线程池,最大允许n个线程并发执行
private ExecutorService executorService = Executors
.newFixedThreadPool(Config.getInt("system.max.thread"));
private ThreadSendWxMessage(){}
public static ThreadSendWxMessage getRunner(){
return sendWxMessage;
}
public void start(String openId,String message){
SendWxMessageRunnable runnable = new SendWxMessageRunnable(openId,message);
executorService.submit(runnable);
}
class SendWxMessageRunnable implements Runnable{
private String openId;
private String message;
public SendWxMessageRunnable(String openId,String message){
this.openId = openId;
this.message = message;
}
@Override
public void run() {
try{
WeChatHttp.sendWxMessage(openId,message);
}catch(Exception e){
log.error("系统发送微信消息错误",e);
}
}
}
}
sendWxMessage方法
public static void sendWxMessage(String userId,String message) throws Exception{
WeChatSend send = new WeChatSend();
send.setTouser(userId);
send.putContent(message);
String result = HttpConnectionUtil.httpsRequest(Configure.SEND_MESSAGE_URL
+TokenCache.getAcessTokenToken(),
JSONObject.toJSONString(send));
}
调用的语句
//微信推送消息
ThreadSendWxMessage.getRunner(
).start(paramUser.getId(), "绑定业主成功!");