All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlinx.jupyter.util.Termination.kt Maven / Gradle / Ivy

Go to download

Implementation of REPL compiler and preprocessor for Jupyter dialect of Kotlin (IDE-compatible)

The newest version!
package org.jetbrains.kotlinx.jupyter.util

import java.util.concurrent.ExecutionException
import java.util.concurrent.Executors
import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeoutException

fun closeWithTimeout(
    timeoutMs: Long,
    doClose: () -> Unit,
) {
    val closeExecutor = Executors.newSingleThreadExecutor()
    try {
        val future = closeExecutor.submit(doClose)
        try {
            future.get(timeoutMs, TimeUnit.MILLISECONDS)
        } catch (e: InterruptedException) {
            return
        } catch (e: ExecutionException) {
            return
        } catch (e: TimeoutException) {
            future.cancel(true)
            return
        }
    } finally {
        closeExecutor.shutdownNow()
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy