in ktor-features/ktor-server-sessions/jvm/src/io/ktor/sessions/Cache.kt [236:255]
override fun run() {
do {
lock.withLock {
val item = head()
if (item != null) {
val time = item.timeToWait()
if (time == 0L) {
items.remove(item)
val k = item.key.get()
if (k != null) {
owner.get()?.invalidate(k)
}
} else {
cond.await(time, TimeUnit.MILLISECONDS)
}
}
}
} while (!Thread.interrupted() && owner.get() != null)
}