我查看了AtomicInteger类(发现)的Java源代码,以了解实现JVM需要哪些原子原语。我注意到他们使用无文档的Unsafe API来实现他们的原子整数操作,并且他们使用的唯一两个原语似乎是compare and swap和compare and set操作。不安全类将这些指令实现为本机方法,这使我相信它们使用的是在一般情况下执行这些原始操作的本机指令。然而,并不是每个处理器(尽管大多数现代处理器都有)都有支持这些原语
看看 for CreateIoCompletionPort,我们看到:
操作系统允许为I/O完成端口并发处理I/O完成包的最大线程数。如果此参数为零,则系统允许的并发线程数量与系统中有处理器的线程相同。
但是,我发现的文档没有显示IoCompletionPort实际上创建了任何线程。实际上,微软提供的代码使用以下代码来确定有多少处理核