4

java.util.concurrent.Executor「実際の」スレッドをどのように作成しますか?Executorを実装しているか、任意のexecutorサービス(ThreadPoolExecutorなど)を使用しているとします。JVMは内部でどのように機能しますか?

4

2 に答える 2

3

を呼び出しますThreadFactoryExecutorsクラスを見てください。ThreadFactoryそれらはすべて、実装を提供できるオーバーロードされた引数を持っていることに注意してください。ThreadFactoryインターフェースは基本的に

public Thread newThread(Runnable runnable);

基本的に提供されていない場合のデフォルトの実装はreturn new Thread(runnable);

これをオーバーライドする理由 - とりわけ、スレッド名とデーモンのステータスを設定するのに非常に便利です。

于 2011-04-23T18:28:33.667 に答える
0

Executorは、既製のスレッド管理インターフェイスです。

エグゼキュータのタイプに応じて、1つ以上のスレッドを作成します。スレッドが終了すると、タスクエグゼキュータはそれらを停止するか、実行を終了します。スケジュールされたタスクを実行するエグゼキュータを作成することもできます(たとえば、毎分)。これは、わずか5秒間に必要な多数(多くの場合、数千のスレッド)を作成する場合や、時間の経過とともに使用される多数のスレッドを作成する場合に適しています。

スレッドの数よりも多くのタスクを作成および送信するスレッドの数を指定すると、他のすべてのRunnableオブジェクトは、順番が来るまでキューに入れられます。ここではJVMの魔法はなく、Javaコードだけです。

于 2011-04-23T19:22:22.767 に答える