コアよりスレッドが多いときに、Javaがマルチスレッドを処理する方法を誰かが教えてくれるのだろうかと疑問に思っていましたか?たとえば、私はクワッドコアを持っていますが、私のプログラムは8つのスレッドを使用しています。javaはマルチスレッドをどのように処理しますか?プロセスより多くのスレッド
私はいくつかの並列プログラミングをしたいので頼んでいるだけです。私はそれを使用して、配列のパフォーマンスを改善したい。
ありがとうございました。
編集: 私は並列プログラミングを使用して、コア数でアレイを分割するつもりです。だから、私は約50Kの配列を持っていますし、性能を向上させ、配列のサイズを増やすためにPPを使用することが望ましいでしょう。
そして、1000スレッドを作成するパフォーマンステストスクリプトがあります。 1つのCPUは複数のスレッドを実行できますが、理解しているように、同時に1つのスレッドしかCPUを占有できません(ただし、2つのスレッドは同時に2つのCPUで実行できます)。 OSは、リソースの配分(CPU使用率、RAMなど)を処理します。しかし、それは言語とは関係ありません。 –
しかし、1つのCPUであっても、マルチスレッド化はまだ一般的に高速です。 –
@btquanto CPUに1000個のコア(またはハイパースレッディング付き500個のコア)がない限り、1000個のスレッドを開始しても、プログラムを高速に実行することはできません。これらのスレッドのほとんどは、スケジュールされるまで待機します。スレッドを追加するだけでは自動的にプログラムを高速化することはできません。 – Jesper