たくさんのスレッドとスレッドプールを備えたJavaアプリケーションがあります。AKKAを使用してスレッドとスレッドプールを置き換えることはできますか?
2 に答える
はい、絶対にできます。上記の投稿者の反応に注意してください。それは完全に正確ではありません。アクターはブロッキング I/O を実行できます。子アクターを使用して、各ブロック接続を表すだけです。初心者の間違いは、スレッドを扱うのと同じようにアクターを扱うことです...その場合、上記のポスターの答えは正しいでしょう. ただし、ブロッキングを下位のアクターに渡し、アドホック アクターを毎回使用すると、メインのスループットをブロックする必要がなくなります。
でも、許して。私は道を外れました。要するに、はい、できます。ただし、学習曲線があることを覚えておいてください。アクターのプログラミングは別のパラダイムであり、少し異なる方法で処理する必要があります。
ただし、アクターを使用した並行性のプログラミングは、スレッドやロックを使用するよりも (文字通り) はるかに簡単です。アプリを時間ベースではなくリアクティブにするだけで、多くの同時実行の問題がなくなります。
彼らのサイトでAKKAのドキュメントをチェックしてください。彼らは非常に徹底しています。また、ブック Akka の並行性と有効な Akka もあります。机の上に置いて参考にしてください。
スレッドが何をしているかによって異なります。彼らは IO をブロックしていますか、それともロックを取得して変更可能なデータを共有していますか? その場合、アクターは通常、io やロックのブロックを避ける必要があるため、akka はあまり適していない可能性があります。一方、スレッドが分離された非ブロッキング作業を行い、メッセージ パッシングを介して通信できる場合、akka はおそらく適切です。