Java 多个ExecutorService.execute()调用。线程池。冗余
我正在使用Java 多个ExecutorService.execute()调用。线程池。冗余,java,asynchronous,executorservice,Java,Asynchronous,Executorservice,我正在使用java.util.concurrent.ExecutorService,我想知道意外的冗余使用是否会占用更多资源,或者只是速度较慢。我是说如果我想跑 executor.execute(() -> executor.execute(() -> something()); 知道我正在使用线程池,执行者将从中选择,我不确定执行上述代码后他会做什么 它是否有不良副作用,还是需要更多的资源来执行? 或者执行器如何在池和调用线程之间进行选择?(该命令可以在新线程、池线程或调用线程中
java.util.concurrent.ExecutorService
,我想知道意外的冗余使用是否会占用更多资源,或者只是速度较慢。我是说如果我想跑
executor.execute(() -> executor.execute(() -> something());
知道我正在使用线程池,执行者将从中选择,我不确定执行上述代码后他会做什么
它是否有不良副作用,还是需要更多的资源来执行?
或者执行器如何在池和调用线程之间进行选择?(该命令可以在新线程、池线程或调用线程中执行,[..]
)
关于Lukas否,执行器不会检查您是否已经在线程中,因为总是这样! 您可以使用调试器查看它 它将更慢,并使用更多的资源。创建线程是一个很长的过程(从CPU的角度来看),线程过多会使CPU一直更改上下文并降低性能 你引用了文件,我想你误解了这句话。 它们是关于您的任务(可运行、可调用…)将在何处执行
- 新线程:执行器将创建一个新线程
- 池线程:执行器将对任务进行排队,并且在可能的情况下,它的线程池中的一个线程将接受该任务(池线程从不停止,您可以避免创建过程)
- 调用线程:在调用execute()的线程上执行它
而且,遗嘱执行人没有选择任何东西。这取决于从Executors类中的任何静态方法实例化的executor。由您选择是否需要线程池、单线程或当前线程。不,执行者不会检查您是否已经在线程中,因为情况总是如此! 您可以使用调试器查看它 它将更慢,并使用更多的资源。创建线程是一个很长的过程(从CPU的角度来看),线程过多会使CPU一直更改上下文并降低性能 你引用了文件,我想你误解了这句话。 它们是关于您的任务(可运行、可调用…)将在何处执行
- 新线程:执行器将创建一个新线程
- 池线程:执行器将对任务进行排队,并且在可能的情况下,它的线程池中的一个线程将接受该任务(池线程从不停止,您可以避免创建过程)
- 调用线程:在调用execute()的线程上执行它
而且,遗嘱执行人没有选择任何东西。这取决于从Executors类中的任何静态方法实例化的executor。您可以选择是使用线程池、单线程还是当前线程从
执行器
获得哪个执行器?从执行器
获得哪个执行器?我很感谢您的回答,但我知道这一点。我会把我的问题编辑得更具体一些,所以我回答:)它回答了你的问题吗?我很感激你的回答,但我知道这一点。我将编辑我的问题,使之更具体,因此我回答:)它回答了你的问题吗?