Функция thread
Функция thread создает и немедленно запускает новый поток выполнения.
Позволяет настроить различные параметры потока: имя, приоритет, демонический режим,
а также указать код для выполнения через лямбда-выражение или объект Runnable.
Возвращает объект типа Thread для управления созданным потоком.
Импорт
import kotlin.concurrent.thread
Синтаксис
fun thread(
start: Boolean = true,
isDaemon: Boolean = false,
contextClassLoader: ClassLoader? = null,
name: String? = null,
priority: Int = -1,
block: () -> Unit
): Thread
Параметры
start - флаг автоматического запуска потока (по умолчанию true);
isDaemon - флаг демонического потока (по умолчанию false);
contextClassLoader - загрузчик классов для потока;
name - имя потока;
priority - приоритет потока (от 1 до 10);
block - лямбда-выражение с кодом для выполнения в потоке.
Пример
Создадим и запустим простой поток с выводом сообщения:
val th = thread {
println("Thread is running")
}
th.join()
Результат выполнения кода:
String "Thread is running"
Пример
Создадим поток с именем и демоническим режимом:
val th = thread(
name = "MyThread",
isDaemon = true
) {
println("Daemon thread: ${Thread.currentThread().name}")
}
println("Main thread")
Результат выполнения кода:
String "Main thread"
String "Daemon thread: MyThread"
Пример
Создадим поток с отложенным запуском:
val th = thread(start = false) {
println("Thread started manually")
}
Thread.sleep(1000)
th.start()
th.join()
Результат выполнения кода:
String "Thread started manually"
Пример
Создадим несколько потоков для параллельной обработки данных:
val results = mutableListOf<Int>()
val threads = mutableListOf<Thread>()
for (i in 1..3) {
val th = thread {
Thread.sleep(1000)
results.add(i * 10)
}
threads.add(th)
}
threads.forEach { it.join() }
println("Results: $results")
Результат выполнения кода:
List<Int> [10, 20, 30]