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代码。