From f641e081a09e6ea4edc43eeb73ea56d0a01fc9bb Mon Sep 17 00:00:00 2001 From: Carl Mastrangelo Date: Thu, 3 Sep 2015 14:12:13 -0700 Subject: [PATCH] Daemonize shared threads, and make sure each thread has a name --- .../main/java/io/grpc/internal/GrpcUtil.java | 17 +++++++---------- .../io/grpc/internal/SharedResourceHolder.java | 13 +++++-------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/GrpcUtil.java b/core/src/main/java/io/grpc/internal/GrpcUtil.java index 734f3689a8..d258ffce33 100644 --- a/core/src/main/java/io/grpc/internal/GrpcUtil.java +++ b/core/src/main/java/io/grpc/internal/GrpcUtil.java @@ -48,7 +48,6 @@ import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ThreadFactory; import javax.annotation.Nullable; @@ -305,7 +304,9 @@ public final class GrpcUtil { @Override public ExecutorService create() { return Executors.newCachedThreadPool(new ThreadFactoryBuilder() - .setNameFormat(name + "-%d").build()); + .setDaemon(true) + .setNameFormat(name + "-%d") + .build()); } @Override @@ -326,14 +327,10 @@ public final class GrpcUtil { new Resource() { @Override public ScheduledExecutorService create() { - return Executors.newSingleThreadScheduledExecutor(new ThreadFactory() { - @Override - public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setDaemon(true); - return thread; - } - }); + return Executors.newSingleThreadScheduledExecutor(new ThreadFactoryBuilder() + .setDaemon(true) + .setNameFormat("grpc-timer-%d") + .build()); } @Override diff --git a/core/src/main/java/io/grpc/internal/SharedResourceHolder.java b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java index 5e0b2c6c34..3d628bc962 100644 --- a/core/src/main/java/io/grpc/internal/SharedResourceHolder.java +++ b/core/src/main/java/io/grpc/internal/SharedResourceHolder.java @@ -32,12 +32,12 @@ package io.grpc.internal; import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.util.IdentityHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import javax.annotation.concurrent.ThreadSafe; @@ -65,13 +65,10 @@ public final class SharedResourceHolder { new ScheduledExecutorFactory() { @Override public ScheduledExecutorService createScheduledExecutor() { - return Executors.newSingleThreadScheduledExecutor(new ThreadFactory() { - @Override public Thread newThread(Runnable r) { - Thread thread = new Thread(r); - thread.setDaemon(true); - return thread; - } - }); + return Executors.newSingleThreadScheduledExecutor(new ThreadFactoryBuilder() + .setDaemon(true) + .setNameFormat("grpc-shared-destroyer-%d") + .build()); } });