当用户将CompleteableFuture与Executor一起使用时.这些任务是否在不同的核心上运行.或者它可能是相同的内核,但只是来自Thead Pool的线程?在文档中,我读不到任何有关它的内容.此任务将在创建10个任务的for循环中运行.这些程序会运行在不同的内核上吗?我怎么才能判断这个呢?谢谢

Executor testExecutor = Executors.newFixedThreadPool(5);
CompletableFuture<String> name = CompletableFuture.supplyAsync(() -> "Baeldung",testExecutor);   

推荐答案

是的,线程通常在不同的核心上运行.请注意,每个核心仍然只能有一个活动线程(hyper-threading个线程除外),因此,如果您正在进行繁重的CPU处理,则创建的线程数不应超过核心数量.

线程之间也有一些开销切换,因此避免创建太多线程,即使它们是IO绑定的.您正在使用的线程池是管理这一点的好方法.

您可能找不到很多关于这方面的资源,因为线程管理是操作系统的责任,而不是语言运行时的责任.

我不知道有什么简单的方法来判 break line 程正在使用哪个核心,但是你可以使用任务管理器来判断进程是如何分布的.

Java相关问答推荐

更新我们的一个文物后出现了严重的符号引用错误

gitlab ci不会运行我的脚本,因为它需要数据库连接'

即使我正在使用并发方法,使用Javascript的应用程序也会继续冻结'

Jooq外键关系

所有 case 一起输入时输出错误,而单独放置时输出正确

获取字符串中带空格的数字和Java中的字符

为什么Java Annotation接口覆盖对象类中的方法

由于我在Main方法中关闭了 scanner ,但在该方法中创建了一个新的 scanner ,因此出现了错误

与不同顺序的组进行匹配,不重复组但分开

如何将其他属性引用到log4j2 yaml配置中?

用OSQL创建索引

%This内置函数示例

Java Telnet客户端重复的IAC符号

是否为计划任务补偿系统睡眠?

Instancio未在日志(log)中显示测试失败消息

在JDK Flight Recorder中只记录单个线程

在应用程序运行时更改LookAndFeel

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

获取401未经授权,即使在标头中设置了浏览器名称和cookie

[Guice/MissingImplementation]:未绑定任何实现