java.util.concurrent.Executor
如何创建“真正的”线程?
假设我正在实现Executor或使用任何执行程序服务(如ThreadPoolExecutor)。 JVM如何在内部工作?
答案 0 :(得分:3)
它会调用ThreadFactory
。查看Executors
课程。请注意,它们都有一个重载参数,您可以在其中提供ThreadFactory
实现。 ThreadFactory
接口基本上是
public Thread newThread(Runnable runnable);
如果没有提供默认实现,那么基本上就是return new Thread(runnable);
为什么要覆盖它 - 这对于设置线程名称和守护程序状态等非常有用。
答案 1 :(得分:0)
Executor是现成的线程管理界面。
根据执行程序的类型,它会创建一个或多个线程。线程完成后,其任务执行程序将停止它们或继续运行。您还可以拥有运行计划任务的执行程序(例如每分钟)。这是创建许多(通常是数千个线程)的好选择,只需要五秒钟或者从时间开始使用的大量线程。
如果指定要创建的线程数并提交比线程数量更多的任务 - 所有其他Runnable对象将排队,直到轮到他们为止。这里没有JVM魔法只是java代码。