Java如何获取CPU标识符 怎么获取CPU唯一标识

Java\u5982\u4f55\u8bfb\u53d6CPU\u7684\u6570\u636e\u4fe1\u606f

java\u83b7\u53d6\u6240\u6709\u7cfb\u7edf\u4fe1\u606f\uff08CPU\u3001\u5185\u5b58\u3001\u8fdb\u7a0b\u7b49\uff09\u7684\u4ee3\u7801\uff1a
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.List;

import mytools.com.sun.management.OperatingSystemMXBean;
import mytools.java.io.File;
import mytools.java.lang.management.ManagementFactory;
/**
* \u83b7\u53d6windows\u7cfb\u7edf\u4fe1\u606f\uff08CPU,\u5185\u5b58,\u6587\u4ef6\u7cfb\u7edf\uff09
* @author libing
*
*/

public class WindowsInfoUtil {
private static final int CPUTIME = 500;
private static final int PERCENT = 100;
private static final int FAULTLENGTH = 10;

public static void main(String[] args) {
System.out.println(getCpuRatioForWindows());
System.out.println(getMemery());
System.out.println(getDisk());
}

//\u83b7\u53d6\u5185\u5b58\u4f7f\u7528\u7387
public static String getMemery(){
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
// \u603b\u7684\u7269\u7406\u5185\u5b58+\u865a\u62df\u5185\u5b58
long totalvirtualMemory = osmxb.getTotalSwapSpaceSize();
// \u5269\u4f59\u7684\u7269\u7406\u5185\u5b58
long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
Double compare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100;
String str="\u5185\u5b58\u5df2\u4f7f\u7528:"+compare.intValue()+"%";
return str;
}

//\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf\u4f7f\u7528\u7387
public static List getDisk() {
// \u64cd\u4f5c\u7cfb\u7edf
List list=new ArrayList();
for (char c = 'A'; c <= 'Z'; c++) {
String dirName = c + ":/";
File win = new File(dirName);
if(win.exists()){
long total=(long)win.getTotalSpace();
long free=(long)win.getFreeSpace();
Double compare=(Double)(1-free*1.0/total)*100;
String str=c+":\u76d8 \u5df2\u4f7f\u7528 "+compare.intValue()+"%";
list.add(str);
}
}
return list;
}

//\u83b7\u5f97cpu\u4f7f\u7528\u7387
public static String getCpuRatioForWindows() {
try {
String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// \u53d6\u8fdb\u7a0b\u4fe1\u606f
long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd));
Thread.sleep(CPUTIME);
long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return "CPU\u4f7f\u7528\u7387:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%";
} else {
return "CPU\u4f7f\u7528\u7387:"+0+"%";
}
} catch (Exception ex) {
ex.printStackTrace();
return "CPU\u4f7f\u7528\u7387:"+0+"%";
}
}

//\u8bfb\u53d6cpu\u76f8\u5173\u4fe1\u606f
private static long[] readCpu(final Process proc) {
long[] retn = new long[2];
try {
proc.getOutputStream().close();
InputStreamReader ir = new InputStreamReader(proc.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line = input.readLine();
if (line == null || line.length() < FAULTLENGTH) {
return null;
}
int capidx = line.indexOf("Caption");
int cmdidx = line.indexOf("CommandLine");
int rocidx = line.indexOf("ReadOperationCount");
int umtidx = line.indexOf("UserModeTime");
int kmtidx = line.indexOf("KernelModeTime");
int wocidx = line.indexOf("WriteOperationCount");
long idletime = 0;
long kneltime = 0;
long usertime = 0;
while ((line = input.readLine()) != null) {
if (line.length() < wocidx) {
continue;
}
// \u5b57\u6bb5\u51fa\u73b0\u987a\u5e8f\uff1aCaption,CommandLine,KernelModeTime,ReadOperationCount,
// ThreadCount,UserModeTime,WriteOperation
String caption =substring(line, capidx, cmdidx - 1).trim();
String cmd = substring(line, cmdidx, kmtidx - 1).trim();
if (cmd.indexOf("wmic.exe") >= 0) {
continue;
}
String s1 = substring(line, kmtidx, rocidx - 1).trim();
String s2 = substring(line, umtidx, wocidx - 1).trim();
if (caption.equals("System Idle Process") || caption.equals("System")) {
if (s1.length() > 0)
idletime += Long.valueOf(s1).longValue();
if (s2.length() > 0)
idletime += Long.valueOf(s2).longValue();
continue;
}
if (s1.length() > 0)
kneltime += Long.valueOf(s1).longValue();
if (s2.length() > 0)
usertime += Long.valueOf(s2).longValue();
}
retn[0] = idletime;
retn[1] = kneltime + usertime;
return retn;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
proc.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

/**
* \u7531\u4e8eString.subString\u5bf9\u6c49\u5b57\u5904\u7406\u5b58\u5728\u95ee\u9898\uff08\u628a\u4e00\u4e2a\u6c49\u5b57\u89c6\u4e3a\u4e00\u4e2a\u5b57\u8282)\uff0c\u56e0\u6b64\u5728 \u5305\u542b\u6c49\u5b57\u7684\u5b57\u7b26\u4e32\u65f6\u5b58\u5728\u9690\u60a3\uff0c\u73b0\u8c03\u6574\u5982\u4e0b\uff1a
* @param src \u8981\u622a\u53d6\u7684\u5b57\u7b26\u4e32
* @param start_idx \u5f00\u59cb\u5750\u6807\uff08\u5305\u62ec\u8be5\u5750\u6807)
* @param end_idx \u622a\u6b62\u5750\u6807\uff08\u5305\u62ec\u8be5\u5750\u6807\uff09
* @return
*/
private static String substring(String src, int start_idx, int end_idx) {
byte[] b = src.getBytes();
String tgt = "";
for (int i = start_idx; i <= end_idx; i++) {
tgt += (char) b[i];
}
return tgt;
}
}

\u83b7\u53d6CPU\u7684\u552f\u4e00\u6807\u8bc6\u4ee3\u7801\uff0c\u901a\u5e38\u662f\u901a\u8fc7\u4ee3\u7801\u7f16\u7a0b\u6765\u83b7\u53d6\u7684\uff0c\u5bf9\u4e1a\u4f59\u8005\u6765\u8bf4\uff0c\u96be\u5ea6\u5f88\u5927\uff0c\u4ecb\u7ecd\u4e00\u6b3e\u5c0f\u5de5\u5177\u8f6f\u4ef6\uff0c\u53ef\u7528\u5b83\u6765\u63d0\u53d6\u8fd9\u4e2a\u4ee3\u7801\uff1a
1\u3001\u641c\u7d22\u4e0b\u8f7d \u201c Get CPU ID \u201d \u83b7\u53d6CPU ID\u5de5\u5177\u8f6f\u4ef6\u3002\u8f6f\u4ef6\u8fd0\u884c\u73af\u5883\u8981\u6c42\u5982\u4e0b\uff1a

2\u3001\u4e0b\u8f7d\u56fe\u4e2d\u63d0\u793a\u7684.NET Framework V4.0.30319 \u5b89\u88c5\u540e\uff0c\u8fd0\u884cGet CPU ID\u7a0b\u5e8f\uff0c\u754c\u9762\u5982\u4e0b\uff1b

3\u3001\u70b9\u51fb\u7a97\u53e3\u4e2d \u201c Get CPU ID \u201d \uff0c\u5982\u6307\u9488\u6240\u793a\u4f4d\u7f6e\uff0c\u5373\u4f1a\u663e\u793a\u8fd9\u4e2a\u201c \u552f\u4e00\u4ee3\u7801\u201d\uff1b
4\u3001\u6ce8\u610f\u95ee\u9898\uff0c\u8be5\u5c0f\u5de5\u5177\uff0c\u53ef\u652f\u6301\u5728XP\u53ca\u4ee5\u4e0a\u7248\u672c\u64cd\u4f5c\u7cfb\u7edf\u8fd0\u884c\u3002\u82e5\u5728\u5b89\u88c5 .NET Framework V4.0.30319\u65f6\uff0c\u9047\u5230\u9519\u8bef\u63d0\u793a\uff0c\u53ef\u5148\u5378\u6389\u673a\u4e2d\u539f\u5df2\u5b89\u88c5\u7684 .Net \u8001\u7248\u672c\uff0c\u91cd\u542f\u540e\u518d\u884c\u5b89\u88c5\u5373\u53ef\u3002

可尝试通过System.getProperties() 这类API获取:
System.getProperty("os.arch") -- cpu架构 ,如x86
os.name --如Windows XP
os.version -- 操作系统版本号

如果还无法满足,可以根据系统的不同,利用Runtime入口去执行命令来获取,比如:
linux 下 可以执行如:
Runtime.getRuntime().exec("cat /proc/cpuinfo |grep vender_id");
之类的语句进行获取

  • Java濡備綍鑾峰彇CPU鏍囪瘑绗
    绛旓細濡傛灉杩樻棤娉曟弧瓒筹紝鍙互鏍规嵁绯荤粺鐨勪笉鍚岋紝鍒╃敤Runtime鍏ュ彛鍘绘墽琛屽懡浠ゆ潵鑾峰彇锛屾瘮濡傦細linux 涓 鍙互鎵ц濡傦細Runtime.getRuntime().exec("cat /proc/cpuinfo |grep vender_id");涔嬬被鐨勮鍙ヨ繘琛岃幏鍙
  • java濡備綍鑾峰彇绯荤粺鍐呭瓨銆cpu绛変俊鎭
    绛旓細Eclipse榛樿鎶婅繖浜涘彈璁块棶闄愬埗鐨凙PI璁炬垚浜咵RROR銆傚彧瑕佹妸Windows-Preferences-Java-Complicer-Errors/Warnings閲岄潰鐨凞eprecated and restricted API涓殑Forbidden references(access rules)閫変负Warning灏卞彲浠ョ紪璇戦氳繃銆
  • java 鑳戒笉鑳鑾峰彇CPU鐨処D鍙,纭洏鐨勫簭鍒楀彿
    绛旓細public class CpuUtil { public static void main(String[] args) throws IOException { long start = System.currentTimeMillis(); Process process = Runtime.getRuntime().exec( new String[] { "wmic", "cpu", "get", "ProcessorId" }); process.getOutputStream().close(); Sc...
  • Java濡備綍璇诲彇CPU鐨勬暟鎹俊鎭
    绛旓細import java.io.InputStreamReader;import java.io.LineNumberReader;import java.util.ArrayList;import java.util.List;import mytools.com.sun.management.OperatingSystemMXBean;import mytools.java.io.File;import mytools.java.lang.management.ManagementFactory;/ 鑾峰彇windows绯荤粺淇℃伅锛CPU,鍐呭瓨,鏂囦欢绯荤粺...
  • 璺眰鍦JAVA閲濡備綍鑾峰緱CPU鐨勫簭鍒楀彿,鍜岀‖鐩樼殑搴忓垪鍙枫
    绛旓細鍒╃敤Runtime call鎿嶄綔绯荤粺鐨勫懡浠锛屽叿浣撶殑鍛戒护鍙栧喅浜庝笉鍚岀殑鎿嶄綔绯荤粺锛屾敞鎰忎笉瑕佽皟鐢≧untime.getRuntime().exec(String)鎺ュ彛锛岃鐢≧untime.getRuntime().exec(String[])杩欎釜鎺ュ彛锛屼笉鐒跺鏉傚懡浠ょ殑鎵ц浼氭湁闂銆備緥瀛愬涓嬶紙鎷縞pu涓暟锛屽叾浠栫被浼硷級锛氬畾涔夊懡浠わ細WindowsCmd ="cmd.exe /c echo %NUMBER_OF_...
  • linux java鎬庝箞鑾峰彇cpu
    绛旓細鍙傝冧竴涓嬪惂锛屼唬鐮佸湪闄勪欢閲岄潰锛java鑷甫鐨
  • JAVA 鑾峰彇CPU,鍐呭瓨鏈夊嚑绉嶆柟寮
    绛旓細杩欎竴鍧椾笉鏄java鐨寮洪」锛孋璇█璋冪敤绯荤粺搴曞眰鐨勪笢瑗胯寮哄ぇ涓浜涳紝寤鸿浣跨敤jni璋冪敤C璇█宸茬粡鍐欏ソ鐨勭▼搴忔潵鍙栬繖鏂归潰鐨勬暟鎹
  • java 鎬庝箞鏌ョ湅鏈嶅姟鍣ㄧ殑CPU浣跨敤鐜
    绛旓細1銆佺‘瀹氬綋鍓嶇郴缁熷畨瑁呯殑jdk鏄1.6鐗堟湰浠ヤ笂 2銆亀indows绯荤粺涓湁鑾峰彇cpu浣跨敤鐜囩殑鍙墽琛屾枃浠秂xe锛屽彧瑕佸湪java涓幏鍙璇ユ枃浠剁殑鎵ц璺緞锛岄氳繃Java璋冪敤鍗冲彲銆3銆佽幏鍙栨搷浣滅郴缁熷彲鎵ц鏂囦欢鐩綍procCmd 4銆佽皟鐢java鐨Runtime.getRuntime().exec鎵цcmd搴旂敤绋嬪簭 5銆佸埄鐢╦ava涓璼leep鏉ヨ绠楃潯鐪犲墠鍚巆pu鐨勫繖纰屾椂闂翠笌绌洪棽鏃堕棿...
  • 鐢JAVA鑾峰彇CPU鍐呭瓨纭洏绛変俊鎭,闄や簡sigar浠ュ,杩樻湁鍏朵粬鏇村ソ鐨勫寘鍚...
    绛旓細浜.java鐨鐩綍涓嬫湁涓涓狣emo鏂囦欢澶癸紝閲岄潰鏈夊緢澶氳寖渚嬶紝鍏朵腑灏辨湁璇诲彇CPU淇℃伅锛屾湜閲囩撼鐐硅禐璋㈣阿
  • java web 椤圭洰涓庝箞鑾峰彇瀹㈡埛绔疢AC/纭洏搴忓垪鍙/cpu搴忓垪鍙峰憿?灏忓紵铏氬績...
    绛旓細杩欎釜鏄鑾峰彇涓嶅埌鐨勶紝鍥犱负瀹㈡埛绔笌浣犳湇鍔″櫒涓鑸兘鏄粡杩囧鏉傜殑缃戠粶杩炴帴鏉ョ殑锛岄氬父鎷垮埌鐨凪AC涓鑸槸绾胯矾涓婃煇鍙拌矾鐢卞櫒鐨凪AC锛屾病鏈夊澶ф剰涔夈傝嚦浜庣‖鐩樺簭鍒楀彿鍜CPU搴忓垪鍙凤紝杩欐牴鏈棤娉曚粠涓涓猻oket杩炴帴涓彇鍒般傚氨濂藉儚锛屾垜鏃犳硶鐭ラ亾姣斿鍦≦Q鑱婂ぉ涓闈㈡槸浜鸿繕鏄嫍涓鏍枫
  • 扩展阅读:标识符python ... java中正确的标识符 ... java标识符public ... java需要标识符怎么解决 ... 下列哪个是合法的java标识符 ... jvm ... 下列正确标识符java ... java合法标识符class ... 如下哪个是java中的标识符 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网