程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 編程之美-JAVA控制CPU的使用率

編程之美-JAVA控制CPU的使用率

編輯:關於JAVA

JAVA代碼,裡面的循環和休眠時間,請根據你的機器情況修改,我的大致能穩定在43-44%之間。

這個是粗的代碼,後面我會繼續完善,實現那個完美曲線。

Java代碼

public class T {

   public static void main(String[] args) throws  Exception {
     for (;;) {
      for (int i = 0; i <  96000000; i++)
         ;
      Thread.sleep(10);
     }
    }
 }

下面的代碼可以控制比例

Java代碼

/**
 * 編程之美,JAVA控制CPU的使用率(2),精確控制比例。
 *
 * @author  趙學慶,Java世紀網(java2000.net)
 *
 */
public class T {

  static  int busyTime = 10;
  static int idelTime = busyTime; // 50%的占有率

   public static void main(String[] args) throws Exception {
    long  startTime = 0;
   while (true) {
      startTime =  System.currentTimeMillis();
     while (System.currentTimeMillis() - startTime  < busyTime)
        ;
      Thread.sleep(idelTime);
    }
  }
}

下面的代碼可以生成還算完美的正弦曲線

Java代碼

/**
 * 編程之美,JAVA控制CPU的使用率(2),完美曲線  
 *
 * @author 趙 學慶,Java世紀網(java2000.net)
 *
 */
public class T {

  public  static void main(String[] args) throws Exception {
    // 角度的分割
     final double SPLIT = 0.01;
    //
    // 2PI分割的次數,也就是2/0.01個 ,正好是一周
    final int COUNT = (int) (2 / SPLIT);
    final double  PI = Math.PI;
    // 時間間隔
    final int INTERVAL = 200;
     long[] busySpan = new long[COUNT];
    long[] idleSpan = new long [COUNT];
    int half = INTERVAL / 2;
    double radian = 0.0;
     for (int i = 0; i < COUNT; i++) {
      busySpan[i] = (long)  (half + (Math.sin(PI * radian) * half));
      idleSpan[i] = INTERVAL -  busySpan[i];
      radian += SPLIT;
    }
    long startTime =  0;
    int j = 0;
    while (true) {
      j = j %  COUNT;
      startTime = System.currentTimeMillis();
      while  (System.currentTimeMillis() - startTime < busySpan[j])
        ;
       Thread.sleep(idleSpan[j]);
      j++;
    }
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved