diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java
index 4619f550e7..0bcea69076 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/common/TcpClient.java
@@ -60,7 +60,7 @@
 @Slf4j
 public abstract class TcpClient implements Closeable {
 
-    protected static transient int CLIENTNO = 0;
+    protected static int CLIENTNO = 0;
 
     static {
         try {
@@ -123,12 +123,15 @@ public void initChannel(SocketChannel ch) {
     @Override
     public void close() {
         try {
+
+            goodbye();
+
             channel.disconnect().sync();
-            workers.shutdownGracefully();
+            workers.shutdownGracefully().sync();
             if (heartTask != null) {
                 heartTask.cancel(false);
             }
-            goodbye();
+
         } catch (Exception e) {
             Thread.currentThread().interrupt();
             log.warn("close tcp client failed.|remote address={}", channel.remoteAddress(), e);
diff --git a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java
index 836ad00dc5..585a58b878 100644
--- a/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java
+++ b/eventmesh-sdks/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/cloudevent/CloudEventTCPSubClient.java
@@ -135,7 +135,6 @@ public void registerBusiHandler(ReceiveMsgHook<CloudEvent> handler) throws Event
     @Override
     public void close() {
         try {
-            goodbye();
             super.close();
         } catch (Exception ex) {
             log.error("exception occurred when close", ex);