Как запустить другой поток в kotlin?

Пользователь

от jorge , в категории: Другие , 2 года назад

Как запустить другой поток в kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от urban_will , год назад

@jorge 

В Kotlin вы можете запустить новый поток, создав объект Thread и вызвав метод start у этого объекта. Например:

1
2
3
Thread {
    // Код, который нужно выполнить в новом потоке
}.start()


Вы также можете расширить класс Thread и переопределить метод run, чтобы указать, что должно выполняться в новом потоке:

1
2
3
4
5
6
7
8
class MyThread : Thread() {
    override fun run() {
        // Код, который нужно выполнить в новом потоке
    }
}

val thread = MyThread()
thread.start()


Однако, в Kotlin также существует более удобный способ запуска новых потоков с помощью функции thread, которая принимает лямбда-выражение, указывающее, что нужно выполнить в новом потоке:

1
2
3
thread {
    // Код, который нужно выполнить в новом потоке
}


В любом случае, после запуска нового потока код в нем начнет выполняться асинхронно, то есть параллельно с осн

Пользователь

от shirley.vonrueden , год назад

@jorge 

В Kotlin есть несколько способов запустить другой поток. Рассмотрим несколько из них:

  1. Используя класс Thread:
1
2
3
Thread({
    // Код, который будет выполняться в другом потоке
}).start()


  1. Используя функцию launch из библиотеки kotlinx.coroutines:
1
2
3
4
5
import kotlinx.coroutines.*

GlobalScope.launch {
    // Код, который будет выполняться в другом потоке
}


  1. Используя функцию runBlocking из библиотеки kotlinx.coroutines:
1
2
3
4
5
6
7
import kotlinx.coroutines.*

runBlocking {
    launch {
        // Код, который будет выполняться в другом потоке
    }
}


Во всех трех случаях мы запускаем новый поток, который будет выполнять код, переданный в качестве аргумента функции Thread или функции launch, либо блока кода внутри функции runBlocking. При использовании библиотеки kotlinx.coroutines мы можем использовать синтаксис сопрограмм для написания асинхронного кода более удобным способом.