当前位置:   article > 正文

读取 cpu百分比 进程占用cpu百分比的JAVA实现方式_java 获取设备cpu百分比

java 获取设备cpu百分比

话不多说直接上代码:讲述两种CPU

TotalCpuTime

  1. <span style="font-size:14px;">private static long getTotalCpuTime() { // 获取系统总CPU使用时间
  2. String[] cpuInfos = null;
  3. try {
  4. BufferedReader reader = new BufferedReader(new InputStreamReader(
  5. new FileInputStream("/proc/stat")), 1000);
  6. String load = reader.readLine();
  7. reader.close();
  8. cpuInfos = load.split(" ");
  9. // System.out.println("cpulist:"+Arrays.toString(cpuInfos));
  10. } catch (IOException ex) {
  11. ex.printStackTrace();
  12. }
  13. long totalCpu = Long.parseLong(cpuInfos[2])
  14. + Long.parseLong(cpuInfos[3]) + Long.parseLong(cpuInfos[4])
  15. + Long.parseLong(cpuInfos[6]) + Long.parseLong(cpuInfos[5])
  16. + Long.parseLong(cpuInfos[7]) + Long.parseLong(cpuInfos[8]);
  17. return totalCpu;
  18. }</span>
注:这种方法只获得总的CPU耗时信息

AppCpuTime

  1. private static long getAppCpuTime(int pid) { // 获取应用占用的CPU时间
  2. String[] cpuInfos = null;
  3. try {
  4. // int pid = android.os.Process.myPid();
  5. BufferedReader reader = new BufferedReader(new InputStreamReader(
  6. new FileInputStream("/proc/" + pid + "/stat")), 1000);
  7. String load = reader.readLine();
  8. reader.close();
  9. cpuInfos = load.split(" ");
  10. } catch (IOException ex) {
  11. ex.printStackTrace();
  12. }
  13. long appCpuTime = Long.parseLong(cpuInfos[13])
  14. + Long.parseLong(cpuInfos[14]) + Long.parseLong(cpuInfos[15])
  15. + Long.parseLong(cpuInfos[16]);
  16. return appCpuTime;
  17. }
接下来重点来啦:
  1. public static float getProcessCpuRate(int pid) // 获得应用cpu占用率
  2. {
  3. float CPU = 0;
  4. try {
  5. float totalCpuTime1 = getTotalCpuTime();
  6. float processCpuTime1 = getAppCpuTime(pid);
  7. try {
  8. Thread.sleep(300);
  9. } catch (Exception e) {
  10. }
  11. float totalCpuTime2 = getTotalCpuTime();
  12. float processCpuTime2 = getAppCpuTime(pid);
  13. float cpuRate = 100 * (processCpuTime2 - processCpuTime1)
  14. / (totalCpuTime2 - totalCpuTime1);
  15. String str = new DecimalFormat("0.00").format(cpuRate);
  16. CPU = Float.parseFloat(str);
  17. } catch (Exception e) {
  18. }
  19. return CPU;
  20. }

以上读取方式都是采用bufferReader读取指定路径中的信息。这中方式简单易操作。   接下来给大家讲解另一种方式,读取CPU相关信息:在我项目中...........MyUtil类里。同样采用的是bufferReader。返回的是一个ArrayList集合,存放了多核的耗时总时间时间eg:cpu  cpu1 cpu2 cpu 3...........等。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/58886
推荐阅读
相关标签
  

闽ICP备14008679号