diff --git a/ts-core/src/main/kotlin/cn/tursom/core/ShutdownHook.kt b/ts-core/src/main/kotlin/cn/tursom/core/ShutdownHook.kt index dedf9ba..6b2df5b 100644 --- a/ts-core/src/main/kotlin/cn/tursom/core/ShutdownHook.kt +++ b/ts-core/src/main/kotlin/cn/tursom/core/ShutdownHook.kt @@ -1,7 +1,6 @@ package cn.tursom.core import com.sun.org.slf4j.internal.LoggerFactory -import java.lang.ref.Reference import java.lang.ref.SoftReference import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.atomic.AtomicInteger @@ -14,10 +13,6 @@ import java.util.concurrent.atomic.AtomicInteger object ShutdownHook { private val logger = LoggerFactory.getLogger(ShutdownHook::class.java) - private val shutdownHooks = ConcurrentLinkedDeque Unit)?>>() - private val availableThreadCount = Runtime.getRuntime().availableProcessors() * 2 - private val activeThreadCount = AtomicInteger() - interface Reference { fun get(): T } @@ -31,6 +26,10 @@ object ShutdownHook { } } + private val shutdownHooks = ConcurrentLinkedDeque Unit)?>>() + private val availableThreadCount = Runtime.getRuntime().availableProcessors() * 2 + private val activeThreadCount = AtomicInteger() + fun addHook(softReference: Boolean = false, hook: () -> Unit): Hook { if (activeThreadCount.incrementAndGet() <= availableThreadCount) { addWorkThread()