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)
    }
}