web-dev-qa-db-fra.com

Pourquoi il n'y a pas de mot-clé de concurrence dans Kotlin?

Pourquoi n'y a-t-il pas de mots-clés pour la synchronisation/l'accès simultané?

Jusqu'à présent, mes recherches m'ont fourni une solution: vous encapsulez des classes de haut niveau et les utilisez pour gérer la concurrence.

Étant donné un projet en Kotlin pur, que faire si on a besoin d’un petit composant hautement optimisé qui gère la concurrence, etc.?

Mon impression est que Kotlin est un langage d'assistance pour Java, permettant d'écrire 90% du code dans Kotlin mais comportant du code Java qu'il n'est pas possible d'exprimer avec Kotlin.

Est-ce correct? Est-ce ainsi que cela devait être?

56
vach

Kotlin 1.1 avec Coroutines a été publié et il est accompagné de async..await! En savoir plus à ce sujet dans documentation de référence Kotlin , bibliothèque Kotlinx Coroutines et cette grande profondeur Couroutines par exemple

En dehors des Koutlin Coroutines, vous disposez des options suivantes:

Vous avez tout Java a et plus. Votre phrase "synchronisation et verrous" est satisfaite par la liste ci-dessus, puis vous en avez encore plus et sans changement de langue . Toutes les fonctionnalités linguistiques le rendraient un peu plus joli.

Vous pouvez donc avoir du code Kotlin à 100%, en utilisant le petit runtime Kotlin, le runtime JVM du JDK et toute autre bibliothèque JVM que vous souhaitez utiliser. Pas besoin de code Java, seulement des bibliothèques Java (as-in JVM)).

Un échantillon rapide de certaines fonctionnalités:

class SomethingSyncd {
    @Synchronized fun syncFoo() {

    }

    val myLock = Any()

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

    @Volatile var thing = mapOf(...)
}
112
Jayson Minard