From 2e8d0aef88a9b970b48b8c80dbb7669ac0e16cdd Mon Sep 17 00:00:00 2001 From: Oleg Bulkin Date: Mon, 28 Aug 2023 15:44:43 -0700 Subject: [PATCH] Fix DaemonThreadFactory - reuse single Java thread factory * Move defaultThreadFactory call to DaemonThreadFactory#initialize and store resulting factory in @java_thread_factory * In DaemonThreadFactory#newThread, use stored factory to generate new threads instead of creating a new factory each time --- .../concurrent/executor/java_executor_service.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb b/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb index 9a8638552..7c9ab178e 100644 --- a/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +++ b/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb @@ -88,10 +88,11 @@ class DaemonThreadFactory def initialize(daemonize = true) @daemonize = daemonize + @java_thread_factory = java.util.concurrent.Executors.defaultThreadFactory end def newThread(runnable) - thread = java.util.concurrent.Executors.defaultThreadFactory().newThread(runnable) + thread = @java_thread_factory.newThread(runnable) thread.setDaemon(@daemonize) return thread end