Подтвердить что ты не робот

Почему в Kotlin нет ключевых слов параллелизма?

Почему нет ключевых слов для синхронизации/параллелизма?

Пока мое исследование дает мне одно решение: вы оберните несколько классов высокого уровня и используете их для обработки параллелизма.

Учитывая проект на чистом Kotlin, что делать, если есть необходимость в небольшом высоко оптимизированном компоненте, который обрабатывает параллелизм и т.д.?

У меня сложилось впечатление, что Kotlin является вспомогательным языком для Java, для написания 90% кода на Kotlin, но есть некоторый код Java, который невозможно выразить с помощью Kotlin.

Это правильно? Это так и должно было быть?

4b9b3361

Ответ 1

Kotlin 1.1 с Coroutines был выпущен, и он приносит с собой async..await ! Узнайте больше об этом в справочных документах Kotlin, библиотеке Kotlinx Coroutines и этой большой глубине. Курутины по примеру

Вне Kotlin Coroutines у вас есть следующие возможности:

У вас есть все Java и многое другое. Ваша фраза "синхронизация и блокировки" удовлетворяется приведенным выше списком, а затем у вас есть еще больше и без изменений языка. Любые особенности языка только сделают его немного красивее.

Таким образом, вы можете иметь 100% код Kotlin, используя небольшую временную среду Kotlin, время выполнения JVM из JDK и любую другую библиотеку JVM, которую вы хотите использовать. Не требуется Java-код, а просто библиотеки Java (as-in JVM).

Быстрый выбор некоторых функций:

class SomethingSyncd {
    @Synchronized fun syncFoo() {

    }

    val myLock = Any()

    fun foo() {
        synchronized(myLock) {
            // ... code
        }
    }

    @Volatile var thing = mapOf(...)
}