Files
kotlin-fork/libraries/stdlib/jvm/test/concurrent/ThreadTest.kt
T
nikita.movshin 65244b4bea Update copyright.
Change the copyright from "JetBrains s.r.o." to
"JetBrains s.r.o. and Kotlin Project contributors"
Update only 2 lines copyright.
2019-04-23 20:09:22 +03:00

55 lines
1.4 KiB
Kotlin

/*
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package test.concurrent
import kotlin.concurrent.*
import kotlin.test.*
import java.util.concurrent.*
import java.util.concurrent.TimeUnit.*
class ThreadTest {
@Test fun scheduledTask() {
val pool = Executors.newFixedThreadPool(1)
val countDown = CountDownLatch(1)
pool.execute {
countDown.countDown()
}
assertTrue(countDown.await(2, SECONDS), "Count down is executed")
}
@Test fun callableInvoke() {
val pool = Executors.newFixedThreadPool(1)
val future = pool.submit<String> { // type specification required here to choose overload for callable, see KT-7882
"Hello"
}
assertEquals("Hello", future.get(2, SECONDS))
}
@Test fun threadLocalGetOrSet() {
val v = ThreadLocal<String>()
assertEquals("v1", v.getOrSet { "v1" })
assertEquals("v1", v.get())
assertEquals("v1", v.getOrSet { "v2" })
v.set(null)
assertEquals("v2", v.getOrSet { "v2" })
v.set("v3")
assertEquals("v3", v.getOrSet { "v2" })
val w = object : ThreadLocal<String>() {
override fun initialValue() = "default"
}
assertEquals("default", w.getOrSet { "v1" })
}
}