2016-09-12 6 views
1

Scalaでマルチスレッドコードを書くときにどのようなアプローチを取るべきか、むしろ混乱しています。 3つのオプションがあります。 -
Scalaでマルチスレッドを実行するための推奨方法

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

です。Akkaは過度のものではありません。 Akkaの俳優は、このような要件のために特別に作られています.Akka全体ではなく、Akka-actorsパッケージを使用することができます。 – pamu

答えて

1

私は、先物から始まり、必要があれば俳優に移動することをお勧めします。

0

Akkaは単なるマルチスレッドです。分散アプリケーション/ジョブのフレームワークです。複数のコンシューマ/プロデューサスレッドを実装する必要がある場合は、私はあなたにakkaを受け取ります。

ドキュメントの配布されたpub-subセクションを見ていることがあります。 http://doc.akka.io/docs/akka/current/scala/distributed-pub-sub.html

akkaが使いすぎてスカラ機能を使用できない場合は、Scala機能を使用してください。 Scalaの機能に関する記事のシリーズは、https://github.com/viktorklang/blog

関連する問題