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;
...
} ...
但是在 Worker 的实现中,我看不到字段“thread”是如何用作运行器的。
此外,我不明白如何为 Thread 提供可重用的自定义“运行”方法(重用的地方 - 如 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 创建的线程的“运行”方法?这是我理解“自定义线程创建+线程'重用'”机制的唯一方法。