私は今、最終年度のプロジェクトを開始しています。Java と scala の観点から並行処理のアプローチを調査します。Java 並行性モジュールから抜け出した私には、共有状態のスレッド化アプローチが推論するのが難しいと人々が言う理由がわかりました。Java スレッドが非決定論的に動作するため、懸念すべき重要なセクションがあり、競合状態やデッドロックなどのリスクがあります。1.5 では、この推論はいくらか明確になりましたが、それでも明確にはほど遠いものでした。
一見すると、scala はアクター クラスを通じてこの複雑な推論を取り除いているように見えます。これにより、プログラマーは、よりシーケンシャルな視点から並行システムを開発し、概念化することが容易になりました。しかし、このポジティブな点について、いくつかの欠点があると私が言っているのは正しいでしょうか? たとえば、両方のシナリオで大きなリストを並べ替えたいとします。Java を使用して 2 つのスレッドを作成し、リストを 2 つに分割し、クリティカル セクション、アトミック アクションなどを心配してコードを実行します。scala では、「何も共有しない」ため、実際には list/2 を 2 つのアクターに渡してソート操作を実行する必要がありますよね?
私の質問は、より単純な推論に対して支払う代償は、スカラでコレクションをアクターに渡さなければならないというパフォーマンスのオーバーヘッドであると思いますか?
この効果のためにいくつかのベンチマーク テスト (選択ソート、クイック ソートなど) を行うことを考えていましたが、1 つは機能的でもう 1 つは必須であるため、アルゴリズムの観点からリンゴとリンゴを比較することはしません。
私を始めるためのいくつかのアイデアを私に与えるために、あなたが上記について持っている意見を本当に感謝します. どうもありがとう。