Javaでは、Javaで1つのタスクを実行するために複数のスレッドを追加すると、そのタスクをより高速に実行できますか?
現在、私のプログラムではメインスレッドが使用されていましたが、遅かったです。私の現在の測定値は毎秒 500 プロセスでしたが、プロセスの総数は 10 億を超えていました。プログラムをより速く実行するにはどうすればよいですか?
Javaでは、Javaで1つのタスクを実行するために複数のスレッドを追加すると、そのタスクをより高速に実行できますか?
現在、私のプログラムではメインスレッドが使用されていましたが、遅かったです。私の現在の測定値は毎秒 500 プロセスでしたが、プロセスの総数は 10 億を超えていました。プログラムをより速く実行するにはどうすればよいですか?
Javaでは、Javaで1つのタスクを実行するために複数のスレッドを追加すると、そのタスクをより高速に実行できますか?
それはあなたが何をしているかに完全に依存します。独立したデータに対してタスクを実行し、結果の取得または保存にボトルネックがなく、複数のプロセッサを搭載したマシンを使用している場合は、より多くのスレッドを使用すると役立つ可能性があります。
ただし、それが役に立たないさまざまな方法があります。
これらのケースのいくつかでは、スレッド化が役立つことがありますが、CPU バウンドで予備のコアがたくさんある場合ほど重要ではありません。現在のボトルネックがどこにあるかを突き止める必要があります。
最良の場合でも、所有しているコアの数に比例したスピードアップのみが得られることに注意してください。したがって、16 個のコア (可能性は低いですが実現可能) と完全な並列化があり、1 つのコアが 1 秒あたり 500 アイテムを処理でき、10 億個のアイテムがある場合、すべてを処理するのに 35 時間近くかかることになります。
ほぼ確実なことの 1 つは、マルチスレッド コードはシングルスレッド コードよりも複雑になるということです。物事を単純にするために、高レベルの抽象化 (たとえば、java.util.concurrent
低レベルのもの ( など) の代わりに にあるもの) を使用するようにしてください。java.lang.Thread