2016-02-20 11 views
28

私はちょうどこのすばらしい言葉に潜入しています、そして、この1つの事は私に不満です。なぜ同期のためのキーワードがないのですか?小型の必要性がある場合は、1つが行うものとするどのような純粋なkotlin上のプロジェクト、考えるKotlinに並行性キーワードがないのはなぜですか?

これまでのところ私の研究は、一つの解決策をあきらめ、あなたには、いくつかのハイレベルのクラスをラップし、同時実行を処理するためにそれらを使用...

並行性などを処理する高度に最適化されたコンポーネントです。私の印象は、kotlinはJava用の補助言語であり、kotlinのコードの90%を書きますが、kotlinで表現できないJavaコードがいくつかあることです。

これは正しいですか?これはそれが意図された方法ですか?

+0

https://discuss.kotlinlang.org/t/concurrency-in-kotlin/858 –

+14

Kotlinは、(ブロックを同期したhttps://kotlinlang.org/ api/latest/jvm/stdlib/kotlin/synchronized.html)、同期メソッド(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin。JVM /)/ -synchronized、揮発性フィールド(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.jvm/-volatile/index.html)。また、java.util.concurrentクラスを使用できます。あなたは何を探していますか? –

+0

ここでは複数の質問がありますが、1つのトピックに集中する必要があります。どんな並行性のものが欠けていると思いますか、私はそれが欠けていないように聞こえるものを指定します。次に、他の質問は本当にSOの質問ではなく、意見に基づいています(そして正しい主張ではありません)。 –

答えて

54

Kotlin 1.1 with Coroutines was releasedそしてそれはそれに伴いasync..await! 、Kotlin reference docsでそれについての詳細を読むKotlinx Coroutines libraryし、この偉大な深さCouroutines by Example

にKotlinコルーチンの外では、これらのオプションを持っている:

を使用することができ、そのようなAtomicReferenceAtomicLong、...

  • としてjava.util.concurrent.atomic packageで何かをアクセスすることができます。あなたのフレーズ"同期とロック"が上記のリストで満たされていれば、さらに多くの言語が変更されます。どんな言語機能もそれをちょっと美しくするに過ぎません。

    小さなKotlinランタイム、JDKのJVMランタイム、および使用する他のJVMライブラリを使用して、100%Kotlinコードを作成できます。 Javaコードは必要ありません.Java(in-in JVM)ライブラリだけです。

    いくつかの機能の簡単なサンプル:

    class SomethingSyncd { 
        @Synchronized fun syncFoo() { 
    
        } 
    
        val myLock = Any() 
    
        fun foo() { 
         synchronized(myLock) { 
          // ... code 
         } 
        } 
    
        @Volatile var thing = mapOf(...) 
    } 
    
  • +0

    どれ例をコルーチン?私はこの方法で同期書く場合のcosは、それだけで文句を言わないそれを取る...揮発性と同じ... – vach

    +1

    @vach私はあなたの質問の下で、私のコメント内のリンクを与えました。 SynchronizedとVolatileはアノテーションです。 –

    +0

    @vachあなたが試したコードをお持ちの場合は、エラーメッセージと共に質問に含める必要があります。 –

    関連する問題