2

Java 8,Spring Boot 2。我正在使用多线程和 CompletableFuture 测试性能时,我意识到只有 1 个核心处于阻塞状态,其余核心基本上没有做太多工作。 仅 1 个核心的高负载

其他内核上的一些负载可能是由机器上运行的其他进程引起的。我试图找出问题所在,然后意识到

Runtime.getRuntime().availableProcessors()

在运行时总是返回 1。我是否启动了多个线程都没有关系,数字始终是 1(应该是 8)。然后我创建了简单的单元测试类并运行 availableProcessors() 代码并得到 8。显然,连接到 Spring 上下文的东西使运行时看不到所有可用的内核。帮助?

4

1 回答 1

1

问题未连接到 Hibernate、Spring 或任何其他容器。我们有 jni4net Bridge 在启动期间注册 DLL 文件(第 3 方库)。当 DLL 中的第一个服务类被实例化时,我们从 8 个核心减少到 1 个核心......显然与 dll 或桥有关。因为那是完全不同的问题,我认为这篇文章就足够了。

于 2018-04-24T11:26:23.113 回答