Scalaでマルチスレッドコードを書くときにどのようなアプローチを取るべきか、むしろ混乱しています。 3つのオプションがあります。 -
Scalaでマルチスレッドを実行するための推奨方法
- Javaスタイルを使用し、構文の問題がある場所でScalaを使用します。 Scalaにvolatileキーワードはありませんが、フィールドはvolatileでマークされ、@volatileでマークされますが、関数には同期が許可されていませんが、this.synchronizedを使用できます。
- 可能な限りscala.concurrent.implパッケージを使用してください。これにはScala固有のFuture、FutureTasksなどがあります。次に、PriorityQueue、SynchronizedBuffer、SynchronizedMapなどのさまざまなコレクションを提供するscala.collection.mutableがあります。そのうちのいくつかは廃止されており、ドキュメントではjava.util.concurrent(!)物事はさらに怪しい。
- 最後に、Akkaがあります。これは、Scalaリリースの一部となり、マルチスレッドのデフォルトの方法になるとも言われています。私は確信していません。
誰かが簡単なマルチスレッドアプリケーションの正しいアプローチであることを教えてもらえますか?私はプロデューサーの消費者の種類のアプリを複数のプロデューサースレッドと複数のコンシューマースレッドで書いていますが、これは正しいscalaisticな方法です。
アッカは余計に見えます。
Scalaライブラリが独自の並行データ構造を提供している理由を理解できません。そのうちのいくつかは廃止されており、Java並行パッケージには追加機能も提供していません。
です。Akkaは過度のものではありません。 Akkaの俳優は、このような要件のために特別に作られています.Akka全体ではなく、Akka-actorsパッケージを使用することができます。 – pamu