
1、确定当前系统安装的jdk是16版本以上
2、windows系统中有获取cpu使用率的可执行文件exe,只要在java中获取该文件的执行路径,通过Java调用即可。
3、获取 *** 作系统可执行文件目录procCmd
4、调用java的RuntimegetRuntime()exec执行cmd应用程序
5、利用java中sleep来计算睡眠前后cpu的忙碌时间与空闲时间,因为sleep不会释放系统资源
6、根据忙碌时间占总时间的比例来计算cpu使用率
示例:
private double getCpuRatioForWindows() {try {
String procCmd = Systemgetenv("windir")
+ "//system32//wbem//wmicexe process get Caption,CommandLine,"
+ "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
// 取进程信息
long[] c0 = readCpu(RuntimegetRuntime()exec(procCmd));
Threadsleep(CPUTIME);
long[] c1 = readCpu(RuntimegetRuntime()exec(procCmd));
if (c0 != null && c1 != null) {
long idletime = c1[0] - c0[0];
long busytime = c1[1] - c0[1];
return DoublevalueOf(
PERCENT (busytime) / (busytime + idletime))
doubleValue();
} else {
return 00;
}
} catch (Exception ex) {
exprintStackTrace();
return 00;
}
}
windows下获取当前进程的话可以用dos命令tasklist
1
2
3
4
5
6
7
Runtime r=RuntimegetRuntime();
Process p=rexec("cmd /C tasklist");
BufferedReader reader=new BufferedReader(new InputStreamReader(pgetInputStream(),"gbk"));//windows的默认系统中文编码是gbk所以从cmd控制台的信息已gbk来解码
String line=null;
while((line=readerreadLine())!=null)
Systemoutprintln(line);
windows : RuntimegetRuntime()exec('taskkill /F /IM abcexe'); 帮助: 运行cmd输入taskkill - linux: RuntimegetRuntime()exec('killall -9 abcexe');
晕啊,用java来做这好麻烦java语言本身就不擅长往windows底层去,只能给你提供一个思路,可以用java的jnl调用windows底层的方法,可以监控进程和注册表,但是要必须要了解QQ的消息提示的原理和酷狗运行时的状态才行,那些原理没研究过
可以参考:
>
>
SWT Win32 Extension 是Eclipse类库SWT的Win32本地原生扩展
本项目提供了一个软件开发工具库,能够让您使用Java语言开发原生的Windows应用程序而不需要编写额外的JNI代码。使用SWT Win32 Extension,您将不需要创建原生的动态链接库来调用 *** 作系统动态链接库的系统API或者方法。您仅仅需要做的就是编写Java代码, SWT Win32 Extension来负责剩下的部分。SWT Win32 Extension提供了一系列的功能使您的应用程序看上去和Win32本机程序别无二致。
窗口装饰功能: 提供窗口置顶,透明,闪动等功能。
自定义窗口: 创建不规则的窗口。
访问Windows注册表。
系统文件夹: 获取系统特殊文件加的路径和图标。
系统快捷方式: 管理系统快捷方式。
系统相关信息: 收集系统CPU,内存,环境变量等相关信息。
系统会话: 提供关机,休眠,重启,注销等功能。
系统IO及网络功能: 提供磁盘和网络相关信息。
活动桌面功能: 管理Windows活动桌面。
系统钩子: 注册和卸载系统钩子,能够拦截和处理系统事件。
窗口系统菜单: 管理窗口菜单。用户可以自定义系统菜单和处理菜单事件。
Ole 控件: 提供对一些常用控件的封装,比如flash。 值得一提的是,您能够访问SWT提供的所有功能,因为SWT Win32 Extension是从SWT派生出来的。
以上就是关于请问Java中获得CPU使用率的办法windows系统全部的内容,包括:请问Java中获得CPU使用率的办法windows系统、java怎么获得其它程序句柄、如何让一个Java进程与其他Windows进程进行通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)