From f49c47cf327df665835733048030b0047964b71d Mon Sep 17 00:00:00 2001 From: Daniel Qian Date: Tue, 11 Nov 2014 15:12:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B6=88=E6=81=AF=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=E5=99=A8=EF=BC=8C=E4=BD=BF=E7=94=A8=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E7=9A=84=E7=BA=BF=E7=A8=8B=E6=B1=A0=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=9C=A8=E6=9E=84=E9=80=A0=E5=87=BD=E6=95=B0=E9=87=8C?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E7=BA=BF=E7=A8=8B=E6=B1=A0=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chanjar/weixin/cp/api/WxCpMessageRouter.java | 12 ++++++++++-- .../chanjar/weixin/mp/api/WxMpMessageRouter.java | 14 +++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java index 8c3d493c..01cc6321 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpMessageRouter.java @@ -41,14 +41,22 @@ import me.chanjar.weixin.cp.bean.WxCpXmlOutMessage; */ public class WxCpMessageRouter { + private static final int DEFAULT_THREAD_POOL_SIZE = 20; + private final List rules = new ArrayList(); - private final ExecutorService es = Executors.newCachedThreadPool(); + private final ExecutorService executorService; private final WxCpService wxCpService; public WxCpMessageRouter(WxCpService wxCpService) { this.wxCpService = wxCpService; + this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE); + } + + public WxCpMessageRouter(WxCpService wxMpService, int threadPoolSize) { + this.wxCpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(threadPoolSize); } /** @@ -79,7 +87,7 @@ public class WxCpMessageRouter { if (matchRules.get(0).async) { // 只要第一个是异步的,那就异步执行 // 在另一个线程里执行 - es.submit(new Runnable() { + executorService.submit(new Runnable() { public void run() { for (final Rule rule : matchRules) { rule.service(wxMessage); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java index 0dcbb9e0..b445d9c9 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMessageRouter.java @@ -40,15 +40,23 @@ import java.util.regex.Pattern; * */ public class WxMpMessageRouter { - + + private static final int DEFAULT_THREAD_POOL_SIZE = 20; + private final List rules = new ArrayList(); - private final ExecutorService executorService = Executors.newCachedThreadPool(); + private final ExecutorService executorService; private final WxMpService wxMpService; public WxMpMessageRouter(WxMpService wxMpService) { this.wxMpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE); + } + + public WxMpMessageRouter(WxMpService wxMpService, int threadPoolSize) { + this.wxMpService = wxMpService; + this.executorService = Executors.newFixedThreadPool(threadPoolSize); } /** @@ -79,7 +87,7 @@ public class WxMpMessageRouter { if (matchRules.get(0).async) { // 只要第一个是异步的,那就异步执行 // 在另一个线程里执行 - executorService.submit(new Runnable() { + executorService.execute(new Runnable() { public void run() { for (final Rule rule : matchRules) { rule.service(wxMessage);