如何java.util.concurrent.Executor
创建“真实”线程?假设我正在实现 Executor 或使用任何 executor 服务(如 ThreadPoolExecutor)。JVM 内部是如何工作的?
问问题
3363 次
2 回答
3
它调用ThreadFactory
. 看看Executors
班级。请注意,它们都有一个重载参数,您可以在其中提供ThreadFactory
实现。ThreadFactory
界面基本是
public Thread newThread(Runnable runnable);
如果没有提供,默认实现基本上就是return new Thread(runnable);
为什么要覆盖它——它对于设置线程名称和守护进程状态等非常有用。
于 2011-04-23T18:28:33.667 回答
0
Executor 是现成的线程管理接口。
根据执行器的类型,它会创建一个或多个线程。线程完成后,其任务执行器将停止它们或继续运行。您还可以让执行器运行计划任务(例如每分钟)。对于创建仅需要五秒钟的许多(通常是数千个线程)或从一段时间内使用的大量线程来说,这是一个很好的选择。
如果您指定创建和提交任务的线程数量超过线程数量 - 所有其他 Runnable 对象将排队等待轮到它们。这里没有 JVM 魔法,只有 java 代码。
于 2011-04-23T19:22:22.767 回答