From 7cbb8a19fbfd0910044d0e5b6243f831ac2daa99 Mon Sep 17 00:00:00 2001 From: Hiram Chirino Date: Sat, 9 Jun 2012 08:27:47 -0400 Subject: [PATCH] Support using an executor as a function to execute a block. --- .../stdlib/src/kotlin/concurrent/Thread.kt | 8 +++++++ .../stdlib/test/concurrent/ThreadTest.kt | 21 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 libraries/stdlib/test/concurrent/ThreadTest.kt 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