Java 获得CPU工作核心数

Runtime.getRuntime().availableProcessors()
/**
 * 根据 Java 虚拟机可用处理器数目返回最佳的线程数。<br>
 * 最佳的线程数 = CPU可用核心数 / (1 - 阻塞系数),其中阻塞系数这里设为0.9
 */
public static int getBestPoolSize() {
    try {
        // JVM可用处理器的个数
        final int cores = Runtime.getRuntime().availableProcessors();
        // 最佳的线程数 = CPU可用核心数 / (1 - 阻塞系数)
        // TODO 阻塞系数是不是需要有个setter方法能让使用者自由设置呢?
        return (int)(cores / (1 - 0.9));
    }catch (Throwable e) {
        // 异常发生时姑且返回10个任务线程池
        return 10;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容