update ShutdownHook

This commit is contained in:
tursom 2021-07-11 22:38:07 +08:00
parent 228a1137b7
commit 21ad18eecb

View File

@ -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<Reference<(() -> Unit)?>>()
private val availableThreadCount = Runtime.getRuntime().availableProcessors() * 2
private val activeThreadCount = AtomicInteger()
interface Reference<out T> {
fun get(): T
}
@ -31,6 +26,10 @@ object ShutdownHook {
}
}
private val shutdownHooks = ConcurrentLinkedDeque<Reference<(() -> 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()