diff --git a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionClient.java b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionClient.java
index 2ee6fa57972d9ade777007d85001ebe9d6d582e8..cd69b55091aafd5e75c440c0223b6131b5387511 100644
--- a/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionClient.java
+++ b/src/rosjava_actionlib/rosjava_actionlib/src/main/java/com/github/ekumen/rosjava_actionlib/ActionClient.java
@@ -103,6 +103,9 @@ public class ActionClient<T_ACTION_GOAL extends Message,
     if (serverResult != null) {
       serverResult.shutdown(5, TimeUnit.SECONDS);
     }
+    if (serverStatus != null) {
+      serverStatus.shutdown(5, TimeUnit.SECONDS);
+    }
   }
 
   public void gotResult(T_ACTION_RESULT message) {
@@ -142,4 +145,8 @@ public class ActionClient<T_ACTION_GOAL extends Message,
     unpublishClient();
     unsubscribeToServer();
   }
+
+  protected void finalize() {
+    finish();
+  }
 }