From cc2e6b3082558b54cf179f9640552da3eeda1754 Mon Sep 17 00:00:00 2001 From: "shuang.kou" Date: Tue, 26 May 2020 17:27:39 +0800 Subject: [PATCH] [v2.0]refractor create a threadpool util --- .idea/compiler.xml | 2 +- .../5eb67949aee12c29202ad46a9a5acdd558cc76b9 | 6 +- .../705e8b4dff28a291cae5396865e0f0fa96cda002 | 2 +- .../bddd79bdb61bde8988615c5e657068492162e9e3 | 2 +- .idea/sonarlint/issuestore/index.pb | 46 ++++++++++--- .../github/javaguide/NettyClientMain.java | 3 +- .../RpcFrameworkSimpleClientMain.java | 2 +- .../github/javaguide/NettyClientMain.class | Bin 1321 -> 1328 bytes .../RpcFrameworkSimpleClientMain.class | Bin 1461 -> 1468 bytes .../github/javaguide/NettyServerMain.java | 3 +- .../github/javaguide/NettyServerMain.class | Bin 943 -> 957 bytes pom.xml | 3 + rpc-framework-common/pom.xml | 8 +++ .../utils/concurrent/ThreadPoolFactory.java | 63 ++++++++++++++++++ .../utils/concurrent/ThreadPoolFactory.class | Bin 0 -> 2440 bytes 15 files changed, 120 insertions(+), 20 deletions(-) create mode 100644 rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java create mode 100644 rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 28f0749..91b58e4 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -8,10 +8,10 @@ + - diff --git a/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 b/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 index e32135f..5b9054f 100644 --- a/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 +++ b/.idea/sonarlint/issuestore/5/e/5eb67949aee12c29202ad46a9a5acdd558cc76b9 @@ -1,2 +1,6 @@ -U java:S106"9Replace this use of System.out or System.err by a logger.(߫ź8. \ No newline at end of file +U java:S106"9Replace this use of System.out or System.err by a logger.(߫ź8. +[ +java:S1854">Remove this useless assignment to local variable "rpcClient2".(8իؤ. +L +java:S1481"/Remove this unused "rpcClient2" local variable.(8ؤ. \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 b/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 index 9b3bb6b..2bd1150 100644 --- a/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 +++ b/.idea/sonarlint/issuestore/7/0/705e8b4dff28a291cae5396865e0f0fa96cda002 @@ -1,3 +1,3 @@ G -java:S1948",Make "parameters" transient or serializable.( \ No newline at end of file +java:S1948",Make "parameters" transient or serializable.( \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 b/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 index 726b8cf..7f50051 100644 --- a/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 +++ b/.idea/sonarlint/issuestore/b/d/bddd79bdb61bde8988615c5e657068492162e9e3 @@ -1,3 +1,3 @@ C -java:S1948"&Make "data" transient or serializable.(ݵ8ε . \ No newline at end of file +java:S1948%"&Make "data" transient or serializable.(ݵ8ε . \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb index 3eae6aa..1d3666d 100644 --- a/.idea/sonarlint/issuestore/index.pb +++ b/.idea/sonarlint/issuestore/index.pb @@ -43,18 +43,42 @@ Xrpc-framework-common/src/main/java/github/javaguide/enumeration/RpcErrorMessage README.md,8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d  Qrpc-framework-simple/src/main/java/github/javaguide/registry/ServiceRegistry.java,4/e/4eee7bde8d258a3ad13d5aad4b1fd0f47f159c22 - -brpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcRequestHandlerRunnable.java,3/8/38c46e918cbf2fd183a4d20b5269ff145a5da008  Xrpc-framework-simple/src/main/java/github/javaguide/registry/DefaultServiceRegistry.java,8/a/8a8f0ad1908e89647431f04ae22e059fd159d0c1 - -Rrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcClient.java,8/c/8c93c859db3a1cebbda725b6225a89337732c108 - -Wrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcClientProxy.java,3/5/350655342260f50b6ee7ce69dcb361bad3956984 - -Rrpc-framework-simple/src/main/java/github/javaguide/remoting/socket/RpcServer.java,c/f/cf4f29284214a49bc9f1eeb91eff2d0fbb46e184 - -Srpc-framework-simple/src/main/java/github/javaguide/remoting/RpcRequestHandler.java,e/b/eb77dbc7968406e86bad5a749c9941052f4f3ccc : -.gitignore,a/5/a5cc2925ca8258af241be7e5b0381edf30266302 \ No newline at end of file +.gitignore,a/5/a5cc2925ca8258af241be7e5b0381edf30266302 + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcServer.java,4/f/4f3eda1b64c4d4f1b976343bec03d82d70d85cb1 + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyKryoDecoder.java,7/9/79a691ec739a58083ef0ac1389203a2fbd71f456 +} +Mrpc-framework-simple/src/main/java/github/javaguide/serialize/Serializer.java,a/2/a281e49e82a8ec2f7ba12a8bcb5f2186f46d0c77 + +Urpc-framework-common/src/main/java/github/javaguide/exception/SerializeException.java,1/e/1e9d139dec5a90552b914b239037df398d72bfb1 + +Vrpc-framework-simple/src/main/java/github/javaguide/serialize/kyro/KryoSerializer.java,7/7/77bd9277dc37adef29330c1e78ac2f2485032917 + +Qrpc-framework-simple/src/main/java/github/javaguide/transport/RpcClientProxy.java,2/8/28a849b18f6cfe08ef45a480dff1b8324e54e765 +| +Lrpc-framework-simple/src/main/java/github/javaguide/transport/RpcClient.java,a/2/a2293a8598601b418206102ff4a42e86ac5c116d + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcClient.java,5/0/50091113d4118fd9d05b7a80930d905591dadd6c + +Yrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyKryoEncoder.java,e/5/e5d48526802e06de10a1802186f9d33d10ff47aa +r +Bexample-server/src/main/java/github/javaguide/NettyServerMain.java,1/7/171870430a59c0c44d9340650aff70ba39acaea8 +r +Bexample-client/src/main/java/github/javaguide/NettyClientMain.java,9/e/9ec852e88ae42cd2b9eceb76fd0df53f26fa5b76 + +Wrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyRpcClient.java,a/2/a2710f8ba941b11e1d834a0c57a10db363ee4baf + +Wrpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyRpcServer.java,b/a/ba3e575560636fde885135fa5277f533bf61af1c + +[rpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyClientHandler.java,c/d/cd2bc58a2ed26406a5749d14c0148f8237bb9e14 + +Trpc-framework-simple/src/main/java/github/javaguide/transport/RpcRequestHandler.java,7/6/76847b5dee1f00ac9229b826500369c60abd7b74 + +irpc-framework-simple/src/main/java/github/javaguide/transport/socket/SocketRpcRequestHandlerRunnable.java,7/d/7dc3255c598b3c45cab343a0a79f2aab582ce3a0 + +[rpc-framework-simple/src/main/java/github/javaguide/transport/netty/NettyServerHandler.java,9/a/9a59d8568dc116ae0a68f1173ac9ae7c57ee637e \ No newline at end of file diff --git a/example-client/src/main/java/github/javaguide/NettyClientMain.java b/example-client/src/main/java/github/javaguide/NettyClientMain.java index 911cc1a..2e08811 100644 --- a/example-client/src/main/java/github/javaguide/NettyClientMain.java +++ b/example-client/src/main/java/github/javaguide/NettyClientMain.java @@ -2,8 +2,7 @@ package github.javaguide; import github.javaguide.transport.RpcClient; import github.javaguide.transport.RpcClientProxy; -import github.javaguide.transport.netty.NettyRpcClient; -import github.javaguide.transport.socket.SocketRpcClient; +import github.javaguide.transport.netty.client.NettyRpcClient; /** * @author shuang.kou diff --git a/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java b/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java index b15b4fd..08651b7 100644 --- a/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java +++ b/example-client/src/main/java/github/javaguide/RpcFrameworkSimpleClientMain.java @@ -2,7 +2,7 @@ package github.javaguide; import github.javaguide.transport.RpcClient; import github.javaguide.transport.RpcClientProxy; -import github.javaguide.transport.netty.NettyRpcClient; +import github.javaguide.transport.netty.client.NettyRpcClient; import github.javaguide.transport.socket.SocketRpcClient; /** diff --git a/example-client/target/classes/github/javaguide/NettyClientMain.class b/example-client/target/classes/github/javaguide/NettyClientMain.class index 6278923b90986d4984149d381bcaaa18c06534a2..e727e6c89acdaea2148924f1b0a729f3ab3f9166 100644 GIT binary patch delta 57 zcmZ3+6iWhoZrW#DDtV-REDXHZ}eU@&G7 NWUyusn*5Z-1pvbN47vaS delta 50 zcmdnMwUTSY14c&u$qyM7H*+#YF){K?PGKn)C7ZdJS2F 2.9.0 1.7.25 + 4.1.42.Final 4.0.2 + + 29.0-jre rpc-framework-core diff --git a/rpc-framework-common/pom.xml b/rpc-framework-common/pom.xml index cb798ae..54fc89b 100644 --- a/rpc-framework-common/pom.xml +++ b/rpc-framework-common/pom.xml @@ -11,5 +11,13 @@ rpc-framework-common + + + + com.google.guava + guava + ${guava.version} + + diff --git a/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java b/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java new file mode 100644 index 0000000..01bbe41 --- /dev/null +++ b/rpc-framework-common/src/main/java/github/javaguide/utils/concurrent/ThreadPoolFactory.java @@ -0,0 +1,63 @@ +package github.javaguide.utils.concurrent; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * 创建 ThreadPool(线程池) 的工具类. + * + * @author shuang.kou + * @createTime 2020年05月26日 16:00:00 + */ +public class ThreadPoolFactory { + /** + * 线程池参数 + */ + private static final int CORE_POOL_SIZE = 10; + private static final int MAXIMUM_POOL_SIZE_SIZE = 100; + private static final int KEEP_ALIVE_TIME = 1; + private static final int BLOCKING_QUEUE_CAPACITY = 100; + + private ThreadPoolFactory() { + + } + + public static ExecutorService createDefaultThreadPool(String threadNamePrefix) { + return createDefaultThreadPool(threadNamePrefix, false); + } + + public static ExecutorService createDefaultThreadPool(String threadNamePrefix, Boolean daemon) { + // 使用有界队列 + BlockingQueue workQueue = new ArrayBlockingQueue<>(BLOCKING_QUEUE_CAPACITY); + ThreadFactory threadFactory = createThreadFactory(threadNamePrefix, daemon); + return new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE_SIZE, KEEP_ALIVE_TIME, TimeUnit.MINUTES, workQueue, threadFactory); + } + + + /** + * 创建 ThreadFactory 。如果threadNamePrefix不为空则使用自建ThreadFactory,否则使用defaultThreadFactory + * + * @param threadNamePrefix 作为创建的线程名字的前缀 + * @param daemon 指定是否为 Daemon Thread(守护线程) + * @return ThreadFactory + */ + private static ThreadFactory createThreadFactory(String threadNamePrefix, Boolean daemon) { + if (threadNamePrefix != null) { + if (daemon != null) { + return new ThreadFactoryBuilder().setNameFormat(threadNamePrefix + "-%d").setDaemon(daemon).build(); + } else { + return new ThreadFactoryBuilder().setNameFormat(threadNamePrefix + "-%d").build(); + } + } + + return Executors.defaultThreadFactory(); + } + +} diff --git a/rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class b/rpc-framework-common/target/classes/github/javaguide/utils/concurrent/ThreadPoolFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..fd46af41f6a8b0c3e71ffffc177e220fd2761c9d GIT binary patch literal 2440 zcmbtW+g95~6y0MC#)=>gP^UL?Yc9q>OiPlcn9>?!QU%|@HVyRR%JN_oY>6c#8s7US z{eiR(z$$C?F%SKyuAY(P*d|V!MPD>JGiUa>?Q^8R{{G`n01vP$;VKp+B(W%A5MPF{ z6v9^$g7{jC$GdL>iIRMV+qDy@{a7={*gL${Y024Yj248gQn z=LD104W4&eHExyFT9bChvZkgsH&sg)vcDO$cl85?huMa1?>e=_bM;VdIC`BY99wT5 zBs9~|9LwT{oha{GT&)*Pv$?8jwrL$D$t#WaY`(&GRHtcoG#D0QS%H;kszxJGvMt?c zB&WPBf!qz8dBHV@0889D)HP195!wl< zdCN2y#`~Z!gnu@zy>*8>l+D}yV_9yR+8)K~YEdL3UL=0T-g?c;Tqm#5-dY{)x9hd= z4rUj-oZoN^LzFwYM9z$R)#@?Eu=c-_*aId4F4?NKms9tBf=MOQu{6G_3kpU(?Jf@8 z7gd#U6SqRxkWoTeMhr6y_uO)yr%KAQ)T5ppGt6Iry24^b#zQ=Mo28DYZF+{VDdSr_ z6L+cY9%*JP(J;+MlM|U+L>sqdx{2MBn`K9D*11JJbDqfliHvQ0M_oL7r!M1r{2=2; zRAu}G%1;fNj5>G-J2D!eR7N@|h1zqj*$h`YTR!s{LWg4T6m}^0v2DNq+?H(j1`Uju zBId?q--MU-7O&8FA*7s=uaq+-hU@(~*j6PHv|@_#^gp!vANSNY*|S>9O+?#`3G2+2EpKxdK|RlY~Rl7#nbx%!yi1Nh<}