编程之美第一个题目是控制CPU的比例,让单核CPU的利用率一直在50%,还有一个是画正弦曲线。
自己用java写了一个,如下:
public class Solution {
public void drawSin(){
int width = 200; //数组宽度,理解为正弦的步长
int height = 100; //正弦的最大高度
int mid = height/2; //一半高度,
//这个数组用于控制处于CPU busy状态的高度
//那其余的高度就用总高度减去它
int[] highs = new int[width];
double interval = 2*Math.PI/width;
double init = 0;
for(int i=1;i<width;i++){
highs[i] = (int)(Math.sin(init)*mid+mid); //这样成的时候,最大值是2*mid,最小值是0
init += interval;
}
for(int i=0;;i=(i+1)%width){ //无限循环
long start = System.currentTimeMillis();
while(System.currentTimeMillis()-start<highs[i]); //busy的部分
try {
Thread.sleep(height-highs[i]); //idle的部分
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Solution s = new Solution();
s.drawSin();
}
}