From a024c696414886dc4c06d13ebf80b768cbbd7bf9 Mon Sep 17 00:00:00 2001 From: 10295 <1029559041@qq.com> Date: Sun, 1 Jul 2018 22:01:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=B9=E5=B9=95=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/src/main/java/core/thrift/FactoryPool.java | 15 ++++++++------- .../java/core/thrift/MyAsyncMethodCallback.java | 7 ++++++- .../main/java/web/controller/DataController.java | 12 +++++++++--- web/src/test/java/thrift/ThriftTest.java | 11 +++++++---- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/core/thrift/FactoryPool.java b/core/src/main/java/core/thrift/FactoryPool.java index 4d4d8e2..78ad90c 100644 --- a/core/src/main/java/core/thrift/FactoryPool.java +++ b/core/src/main/java/core/thrift/FactoryPool.java @@ -39,19 +39,20 @@ public class FactoryPool { tNonblockingSocketPool.returnObject(trans); } - public void doExecute(Class c, ServiceClient thrift) throws Exception{ + public void doExecute(Class c, ServiceClient thrift,T t) throws Exception{ TSocket trans=tSocketPool.borrowObject(); - thrift.doExecute(client(c,trans)); + thrift.doExecute(client(c,trans),t); tSocketPool.returnObject(trans); } - private interface Thrift { - void doExecute(E client) throws Exception; - } - public interface AsyncClient extends Thrift{} + public interface AsyncClient{ + void doExecute(C client) throws Exception; + } - public interface ServiceClient extends Thrift{} + public interface ServiceClient{ + void doExecute(C client,T t) throws Exception; + } public C client(Class c, T trans) throws Exception { if (trans instanceof TNonblockingTransport) { diff --git a/core/src/main/java/core/thrift/MyAsyncMethodCallback.java b/core/src/main/java/core/thrift/MyAsyncMethodCallback.java index e68934e..9a06d6e 100644 --- a/core/src/main/java/core/thrift/MyAsyncMethodCallback.java +++ b/core/src/main/java/core/thrift/MyAsyncMethodCallback.java @@ -9,12 +9,13 @@ public class MyAsyncMethodCallback implements AsyncMethodCallback { private E result; public E getResult() throws InterruptedException { - while (onComplete){ + while (result==null&&onComplete){ Thread.sleep(100); } return result; } + @Override public void onComplete(E o) { onComplete=false; @@ -25,4 +26,8 @@ public class MyAsyncMethodCallback implements AsyncMethodCallback { public void onError(Exception e) { e.printStackTrace(); } + + public void setResult(E result) { + this.result = result; + } } diff --git a/web/src/main/java/web/controller/DataController.java b/web/src/main/java/web/controller/DataController.java index 5d91c49..dd4c67e 100644 --- a/web/src/main/java/web/controller/DataController.java +++ b/web/src/main/java/web/controller/DataController.java @@ -1,6 +1,8 @@ package web.controller; +import core.thrift.FactoryPool; import core.thrift.MyAsyncMethodCallback; +import core.thrift.comment.QueryComment; import db.form.DBAction; import db.model.bilibili.DataModel; import org.apache.commons.io.FileUtils; @@ -22,6 +24,7 @@ import web.html.data.DataTable; import web.model.DataModelForm; import web.service.DataService; +import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; @@ -36,6 +39,9 @@ public class DataController extends TableController call = new MyAsyncMethodCallback<>(); -// TTransportUtil.doExecute(client -> client.commentSum(cid, call),QueryComment.AsyncClient.class); - return call.getResult(); + MyAsyncMethodCallback result=new MyAsyncMethodCallback<>(); + factoryPool.doExecute(QueryComment.Client.class, (client, aBoolean) ->result.setResult(client.commentSum(cid)),result); + return result.getResult(); } catch (Exception e) { log.error(e); } diff --git a/web/src/test/java/thrift/ThriftTest.java b/web/src/test/java/thrift/ThriftTest.java index ad99004..9ea5102 100644 --- a/web/src/test/java/thrift/ThriftTest.java +++ b/web/src/test/java/thrift/ThriftTest.java @@ -2,7 +2,7 @@ package thrift; import core.thrift.FactoryPool; import core.thrift.MyAsyncMethodCallback; -import core.thrift.task.TSDM; +import core.thrift.comment.QueryComment; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.junit.Test; @@ -26,15 +26,18 @@ public class ThriftTest { @Test public void test1() throws Exception { - MyAsyncMethodCallback call=new MyAsyncMethodCallback<>(); - factoryPool.doExecute(TSDM.AsyncClient.class,client -> client.qiandao(call)); + MyAsyncMethodCallback call=new MyAsyncMethodCallback<>(); + factoryPool.doExecute(QueryComment.AsyncClient.class,client -> client.commentSum(49052,call)); log.info(call.getResult()); } @Test public void test2() throws Exception{ - factoryPool.doExecute(TSDM.Client.class, client -> log.info(client.qiandao())); + MyAsyncMethodCallback result=new MyAsyncMethodCallback(); + factoryPool.doExecute(QueryComment.Client.class, (client, aBoolean) -> + result.setResult(client.commentSum(49052)),result); + log.info(result.getResult()); } }