Executors.newSingleThreadExecutor将始终在同一系统内核上运行



给定来自Executors.newSingleThreadExecutor()的线程池,是否将在同一CPU核心/线程上执行所有请求,或者在每个任务中选择一个新的请求?

核心和线程是两种不同的东西。就物理核心而言,ThreadPoolExecutor的库文档并不能保证任何将核心绑定到线程的声明。JVM开箱即用也不提供将线程绑定到处理器物理核心的低级别支持。

将进程或线程绑定到处理器被称为处理器亲和性。无论出于何种原因,如果您希望将线程绑定到特定的核心,您都需要查看以下内容:https://github.com/OpenHFT/Java-Thread-Affinity.

如果您的问题是关于线程的,以及同一个线程是否会执行提交到池中的所有任务?然后,不一定,基于线程的空闲时间,池可以终止并创建一个新线程来执行任务。我希望这能澄清你的疑问。

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html#newSingleThreadExecutor((

创建一个执行器,该执行器使用在无界队列。(但是请注意,如果此单个线程终止由于在关闭之前的执行过程中出现故障,新的将如果需要执行后续任务,请就位。(。。。

相关内容

最新更新