diff --git a/libraries/stdlib/src/kotlin/concurrent/Thread.kt b/libraries/stdlib/src/kotlin/concurrent/Thread.kt index d099cfbbd9b..f0d6e8ce956 100644 --- a/libraries/stdlib/src/kotlin/concurrent/Thread.kt +++ b/libraries/stdlib/src/kotlin/concurrent/Thread.kt @@ -50,3 +50,11 @@ public inline fun Executor.execute(action: ()->Unit) { execute(runnable(action)) } +/** + * Allows you to use the executor as a function to + * execute the given block on the [[Executor]]. + */ +public inline fun Executor.invoke(action: ()->Unit) { + execute(runnable(action)) +} + diff --git a/libraries/stdlib/test/concurrent/ThreadTest.kt b/libraries/stdlib/test/concurrent/ThreadTest.kt new file mode 100644 index 00000000000..af40e7f7200 --- /dev/null +++ b/libraries/stdlib/test/concurrent/ThreadTest.kt @@ -0,0 +1,21 @@ +package concurrent + +import kotlin.concurrent.* +import kotlin.test.* + +import org.junit.Test as test + +import java.util.concurrent.* +import java.util.concurrent.TimeUnit.* + +class ThreadTest { + test fun scheduledTask() { + + val pool = Executors.newFixedThreadPool(1).sure() + val countDown = CountDownLatch(1) + pool { + countDown.countDown() + } + assertTrue(countDown.await(2, SECONDS), "Count down is executed") + } +} \ No newline at end of file