diff --git a/jeorg-kotlin-crums/jeorg-kotlin-crums-3/src/main/kotlin/org/jesperancinha/ktd/crums3/TimedTimers.kt b/jeorg-kotlin-crums/jeorg-kotlin-crums-3/src/main/kotlin/org/jesperancinha/ktd/crums3/TimedTimers.kt index 637f4c8e3..e1b4bad3b 100644 --- a/jeorg-kotlin-crums/jeorg-kotlin-crums-3/src/main/kotlin/org/jesperancinha/ktd/crums3/TimedTimers.kt +++ b/jeorg-kotlin-crums/jeorg-kotlin-crums-3/src/main/kotlin/org/jesperancinha/ktd/crums3/TimedTimers.kt @@ -1,5 +1,6 @@ package org.jesperancinha.ktd.crums3 +import arrow.atomic.AtomicInt import java.lang.Thread.sleep import java.time.LocalDateTime import java.util.* @@ -7,6 +8,8 @@ import java.util.* class SleepingTimerTask : TimerTask() { + val counter = AtomicInt(0) + /** * Explicitly blocking to simulate task * This tasks takes 1 second to complete @@ -14,9 +17,15 @@ class SleepingTimerTask : TimerTask() { override fun run() { println("Task started at ${LocalDateTime.now()}") sleep(1000) + counter.addAndGet(1) + callLongProcess() println("Task ended at ${LocalDateTime.now()}") } + private fun callLongProcess() { + sleep(5000) + } + companion object { /** @@ -24,13 +33,15 @@ class SleepingTimerTask : TimerTask() { */ @JvmStatic fun main(args: Array) { - val timerTask: TimerTask = SleepingTimerTask() + val timerTask = SleepingTimerTask() val timer = Timer(true) timer.scheduleAtFixedRate(timerTask, 0, 2_000) println("TimerTask has started and now we wait 10 seconds") + println("Normally it should count 5 calls, but maybe not now, because of the long call") sleep(10_000) timer.cancel() println("TimerTask has been cancelled") + println("${timerTask.counter} calls have been made!") } } }