From 70a25b01bf18805b79e40b9fe75053b4ee0b3c85 Mon Sep 17 00:00:00 2001 From: claincly Date: Tue, 6 Jun 2023 10:20:51 +0000 Subject: [PATCH] Add utility to create ScheduledExecutorService PiperOrigin-RevId: 538129792 (cherry picked from commit 08e7158be51324752c4ae0f3b4f723b6fae7e7a8) --- .../main/java/androidx/media3/common/util/Util.java | 12 ++++++++++++ .../androidx/media3/transformer/MuxerWrapper.java | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/util/Util.java b/libraries/common/src/main/java/androidx/media3/common/util/Util.java index 40449c01ad..f7de1de09a 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/Util.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/Util.java @@ -117,6 +117,7 @@ import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.DataFormatException; @@ -742,6 +743,17 @@ public final class Util { return Executors.newSingleThreadExecutor(runnable -> new Thread(runnable, threadName)); } + /** + * Instantiates a new single threaded scheduled executor whose thread has the specified name. + * + * @param threadName The name of the thread. + * @return The executor. + */ + @UnstableApi + public static ScheduledExecutorService newSingleThreadScheduledExecutor(String threadName) { + return Executors.newSingleThreadScheduledExecutor(runnable -> new Thread(runnable, threadName)); + } + /** * Closes a {@link Closeable}, suppressing any {@link IOException} that may occur. Both {@link * java.io.OutputStream} and {@link InputStream} are {@code Closeable}. diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java b/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java index 18cb6e2621..b2af8efd78 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/MuxerWrapper.java @@ -34,7 +34,6 @@ import androidx.media3.effect.DebugTraceUtil; import com.google.common.collect.ImmutableList; import java.io.File; import java.nio.ByteBuffer; -import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import org.checkerframework.checker.nullness.qual.EnsuresNonNull; @@ -48,6 +47,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; */ /* package */ final class MuxerWrapper { + private static final String TIMER_THREAD_NAME = "Muxer:Timer"; private static final String MUXER_TIMEOUT_ERROR_FORMAT_STRING = "Abort: no output sample written in the last %d milliseconds. DebugTrace: %s"; @@ -93,7 +93,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; trackTypeToInfo = new SparseArray<>(); previousTrackType = C.TRACK_TYPE_NONE; - abortScheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); + abortScheduledExecutorService = Util.newSingleThreadScheduledExecutor(TIMER_THREAD_NAME); } /**