【发布时间】:2012-03-27 06:47:56
【问题描述】:
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 提供自定义“运行”方法 被重用(在重用的地方 - 如在 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 创建的线程的“运行”方法?这是我理解“自定义线程创建+线程'重用'”机制的唯一方法。
【问题讨论】:
标签: java multithreading executor