java.util.concurrent.Executor如何工作?

java.util.concurrent.Executor如何创建“真正的”线程? 假设我正在实现Executor或使用任何执行程序服务(如ThreadPoolExecutor)。 JVM内部如何工作?

它调用ThreadFactory 。 查看Executors类。 请注意,它们都有一个重载参数,您可以在其中提供ThreadFactory实现。 ThreadFactory接口基本上就是

 public Thread newThread(Runnable runnable); 

如果没有提供,默认实现基本上就是return new Thread(runnable);

为什么要覆盖它 – 这对于设置线程名称和守护程序状态等非常有用。

Executor是现成的线程管理界面。

根据执行程序的类型,它会创建一个或多个线程。 线程完成后,其任务执行程序将停止它们或继续运行。 您还可以拥有运行计划任务的执行程序(例如每分钟)。 这是创建许多(通常是数千个线程)的好选择,这些线程仅需要五秒钟或者从时间开始使用大量线程。

如果指定要创建的线程数并提交比线程数量更多的任务 – 所有其他Runnable对象将排队等待轮到他们。 这里没有JVM魔法只是java代码。