Java下获取可用CPU数

简介: 1、获取cpu核心数:Runtime.getRuntime().availableProcessors();创建线程池:Executors.newFixedThreadPool(nThreads);//nThreads为线程数2、这个只要服务器内存够大,CPU核心数较多,处理数据比较强就好了,注意不...

1、获取cpu核心数:
Runtime.getRuntime().availableProcessors();
创建线程池:
Executors.newFixedThreadPool(nThreads);//nThreads为线程数
2、这个只要服务器内存够大,CPU核心数较多,处理数据比较强就好了,注意不要一下分配几千个线程,
可能会导致堆栈溢出的,这样程序就挂了,因为线程很费内存资源




用法一:判断所在服务器是否为多核,从而根据情况编写代码逻辑

/** True if on multiprocessor */
private static final boolean MP =
Runtime.getRuntime().availableProcessors() > 1;

/**
* Returns spin/yield value for a node with given predecessor and
* data mode. See above for explanation.
*/
private static int spinsFor(Node pred, boolean haveData) {
if (MP && pred != null) {
if (pred.isData != haveData) // phase change
return FRONT_SPINS + CHAINED_SPINS;
if (pred.isMatched()) // probably at front
return FRONT_SPINS;
if (pred.waiter == null) // pred apparently spinning
return CHAINED_SPINS;
}
return 0;
}

代码示例来自于JBoss Netty的LinkedTransferQueue

有一个叫sigar的工具,不仅可以看cpu的核心数,还可以看当前占用率,还有内存的使用率。功能很强大。我现在的监控系统就是使用这个东东的 

有一个比sigar更强大的工具,因为他就是依赖sigar做的,奉上:Hyperic HQ 开源版

 

相关文章
|
28天前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
78 0
Java面试题之cpu占用率100%,进行定位和解决
|
3月前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
267 1
【Java】服务CPU占用率100%,教你用jstack排查定位
|
4月前
|
监控 算法 Java
|
4月前
|
Java
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
560 2
|
3月前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
4月前
|
监控 算法 Java
压测分析Java内存和CPU暂用
7月更文挑战第7天
66 5
|
4月前
|
Java
手把手教你java CPU飙升300%如何优化
手把手教你java CPU飙升300%如何优化
57 0
|
5月前
|
监控 Java API
使用Java检测当前CPU负载状态的技术博客
使用Java检测当前CPU负载状态的技术博客
86 0
|
6月前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
78 0
|
6月前
|
Java Shell
java中jvm使用jststak定位线程cpu占用内存高的线程
java中jvm使用jststak定位线程cpu占用内存高的线程
51 5
下一篇
无影云桌面