Coroutineは別途確認です
Executor
などここで説明されて無いものは以下を参照
https://developer.android.com/guide/background/threading?hl=ja
Thread
java.lang.Thread
も使えますがkotlin.concurrent.thread
を使用します
thread
なお一度実行したthreadの再利用(thread_の使いまわし)はできません
// start()不要で実行される
thread {...}
// start = falseにすることで開始タイミングを変更できる
val thread_ = thread(start = false) {...}
thread_.start()
// 処理終了待ち
thread_.join()
// start = falseを使用しない場合は以下のようにもできます
thread {...}.join()
UIスレッドでの処理
// UIスレッドでの処理
runOnUiThread {...}
排他制御
synchronized
もしくはメソッドに@Synchronized
をつける
val lock = Object()
fun test(text: String) {
synchronized(lock) {
repeat(10) {
println("$text:$it")
Thread.sleep(10)
}
}
}
thread { test("1") }
thread { test("2") }
@Synchronized
fun test(text: String) {...}
Timer
タイマーはkotlinでもjava.lang.Timer
を使用します
val timer = Timer().schedule(0, 100) {...}
// キャンセル
timer.cancel()
// またはタイマー処理内でキャンセル
Timer().schedule(0, 100) { cancel() }
Android Studio Dolphin 2021.3.1 Patch 1 built on September 30, 2022