ThreadPoolExecutor クラスを使用すると、カスタム ThreadFactory を指定して新しいスレッドを作成できます。ただし、Sun の ThreadPoolExecutor の実装内でこれらのスレッドがどのように使用されるかはわかりません。
この実装は、次のように新しいスレッドを作成します。
private Thread addThread(Runnable firstTask) {
Worker w = new Worker(firstTask);
Thread t = threadFactory.newThread(w);
if (t != null) {
w.thread = t;
...
} ...
しかし、ワーカーの実装では、フィールド「スレッド」がランナーとしてどのように使用されているかわかりません。
さらに、再利用されるカスタムの「実行」メソッドをスレッドに提供する方法がわかりません(再利用される場合-ThreadPoolExecutorのように-「複数のRunnableを実行する」ことを意味します)。ThreadPoolExecutor がそのようなスレッドを再利用して複数の Runnable を実行するにはどうすればよいですか (クラス Thread の「ターゲット」Runnable が構築時に設定され、セッターがない場合)。ThreadPoolExecutor のドキュメントは次のとおりです。
By supplying a different ThreadFactory, you can alter the thread's name, thread group, priority, daemon status, etc.
これは、カスタム ThreadFactory によって作成されたスレッドの「run」メソッドが使用されないということですか? それが、「カスタムスレッドの作成 + スレッドの「再利用」」メカニズムを理解する唯一の方法です。