From 30a53b41f09d2eefd33513a409d472c2166ba1ea Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 10 一月 2024 17:35:03 +0800 Subject: [PATCH] 1. 新增自动评估相关数据源的检查接口 --- src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt | 35 +++++++++++++++++++++++++++-------- 1 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt b/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt index 93ecb0f..3fece28 100644 --- a/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt +++ b/src/main/kotlin/cn/flightfeather/supervision/datafetch/FetchController.kt @@ -18,7 +18,8 @@ } private val fetchData = mutableListOf<FetchData>() - private var shecdule = Executors.newScheduledThreadPool(2) + private var schedule = Executors.newScheduledThreadPool(1) + private var maintainSchedule = Executors.newScheduledThreadPool(1) private var fetchTime: Date = Date() private var maintainTime: Date = Date() @@ -32,10 +33,13 @@ maintainTask() } - private fun fetchTask() { - shecdule.scheduleAtFixedRate({ + private fun fetchTask(isFirst: Boolean = false) { + if (!isFirst) { + schedule = closeThread(schedule) + } + schedule.scheduleAtFixedRate({ fetchTime = Date() - if (Date().time - maintainTime.time > (MAINTAIN_PERIOD_MIN + 1) * 60 * 1000) { + if (Date().time - maintainTime.time > (MAINTAIN_PERIOD_MIN * 2) * 60 * 1000) { maintainTask() } fetchData.forEach { @@ -44,13 +48,28 @@ }, 0, FETCH_PERIOD_MIN, TimeUnit.MINUTES) } - private fun maintainTask() { - - shecdule.scheduleAtFixedRate({ + private fun maintainTask(isFirst: Boolean = false) { + if (!isFirst) { + maintainSchedule = closeThread(maintainSchedule) + } + maintainSchedule.scheduleAtFixedRate({ maintainTime = Date() - if (Date().time - fetchTime.time > (FETCH_PERIOD_MIN + 1) * 60 * 1000) { + if (Date().time - fetchTime.time > (FETCH_PERIOD_MIN * 2) * 60 * 1000) { fetchTask() } }, 0, MAINTAIN_PERIOD_MIN, TimeUnit.MINUTES) } + + private fun closeThread(s: ScheduledExecutorService): ScheduledExecutorService { + try { + s.shutdown() + if (s.awaitTermination(10, TimeUnit.SECONDS)) { + s.shutdownNow() + } + } catch (e: InterruptedException) { + e.printStackTrace() + s.shutdownNow() + } + return Executors.newScheduledThreadPool(1) + } } \ No newline at end of file -- Gitblit v1.9.3