私たちはJava 7を使用しており、マルチスレッドのデータ処理アプリケーションで作業しています。特定の制約のために、私たちはこの問題を解決するためにsparkやその他のmap-reduceを使用していません。このプロジェクトのアイデアは、マルチスレッドを使用したアプリケーションのパフォーマンスを最大化することです。Javaスレッドの数>コア数とガベージコレクション
私は、CPUがOSとは別のものを実行しているわけではないので、同時に動作するスレッドの数はCPUが提供するハイパースレッディングの数に等しいと考えています。しかし、Java GCがありますが、これはいつもキックインします。それも考慮する必要があります。
また、スレッドをさらに作成すると、コンテキスト切り替えに費やされる時間のために実際にパフォーマンスが低下することにご注意ください。
問題は、これらのすべてを考慮して適切な数のスレッドを作成する最良の方法です。任意のアイデアや思考プロセス?私が検討すべき他のプロセスはありますか?
いいえ、fork-joinフレームワークはJava 7では利用できません。 –
@SleimanJneidi fork-joinは利用できますが、正しく使用するには苦労します。もしあなたがFork-Joinを使いたいなら、これを行うJava 8を使うことを強くお勧めします。つまり、あなたが何をしているのか本当に分かっていなければ、直接使用しないでください。例えばfork-joinで行列乗算を行いたい場合は、Doug Leaの実装をコピーしてください。 –
これは本当ですが、fixedThreadPoolよりスケーラビリティがあります。 –