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

时间:2011-04-23 07:50:47

标签: java multithreading java.util.concurrent

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

2 个答案:

答案 0 :(得分:3)

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

public Thread newThread(Runnable runnable);

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

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

答案 1 :(得分:0)

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

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

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