1. ホーム
  2. java

[解決済み] なぜKotlinには並行処理のキーワードがないのですか?

2023-01-07 21:46:10

疑問点

なぜ同期・同時化のキーワードがないのですか?

これまでのところ、私の研究は1つの解決策を与えてくれます。いくつかの高レベルのクラスをラップし、それを使って並行処理を行うのです。

純粋なKotlinのプロジェクトがあるとして、同時実行などを処理する高度に最適化された小さなコンポーネントが必要な場合、どうすればよいでしょうか?

私の印象では、KotlinはJavaの補助言語であり、コードの90%はKotlinで書くが、Kotlinでは表現できないJavaのコードもある、ということです。

これで良いのでしょうか?こういう意図だったのでしょうか?

どのように解決するのですか?

コルーチンを含むKotlin 1.1がリリースされました。 がリリースされ、それに伴い async..await ! で詳しく紹介しています。 Kotlinリファレンスドキュメント , Kotlinxコルーチンライブラリ そして、この偉大な深さ 例によるコルーチン

Kotlinのコルーチン以外では、以下のような選択肢があります。

Javaが持っているもの全てと、それ以上のものを持っていますね。 あなたのフレーズ 同期とロック。 は上記のリストで満たされ、さらに言語の変更なしに、さらに多くのものを手に入れることができます。 どのような言語機能でも、それを少し美しくするだけです。

つまり、小さなKotlinランタイム、JDKのJVMランタイム、その他使いたいJVMライブラリを使って、100%Kotlinのコードを持つことができるのです。 Javaコードは必要なく、Java (as-in JVM) ライブラリだけです。

いくつかの機能の簡単なサンプルです。

class SomethingSyncd {
    @Synchronized fun syncFoo() {

    }

    val myLock = Any()

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

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