JAVA控制CPU占用率(编程之美有感)(一)

 

自从看完编程之美的第一篇问题分析,内心十分触动:这是什么鬼?还能这样玩?之前对CPU的占用率只局限于:

“卧槽,我内存满了,电脑卡死了”。

“擦!死循环了,这破代码!”。

“这破游戏这么占内存啊!”。

从了解了编程之美的第一节就感觉到了编程之美的美之所在,将天下之物为我所控,Everything is ObjectObject is me。当然这只是一个我玩笑,只是表达我对java的强悍又一认识。

好了闲话少说,下面进入正题。

在编程之美中对系统CPU占用率的分析简直不能再深入,由浅开始,从电脑的CPU内存比的含义开始入手,到如何控制电脑CPU的内存占用率为50%,到动态获取每个电脑的运行内存,以及最后如何让电脑画出一个优美的正弦曲线,都有很深入的分析,看的我触动很大,遍生出了自己去尝试的想法。下面是我自己的实践历程。

打开心爱的Eclipse之后新建了一个Java Project,开始尝试,书上的代码开始很简单,也很容易理解,就是控制下系统的“busy”,和“idle”,那就写下如下代码(假设busyidle时间为),假设忙闲的时间为5ms,可以用for一直在死循环中,5ms后退出。

public static void main(String[] args) throws InterruptedException {
		
		long busyTime = 5;
		Thread th = Thread.currentThread();
		long nowSys = System.currentTimeMillis();
		while(true){
			nowSys = System.currentTimeMillis();
			while((System.currentTimeMillis()-nowSys)<=busyTime){
				
			}
			th.sleep(5);
		}
	}
 
 
 
 
 
 
 
 

 
 

 
 

后来发现,马丹我自己电脑有4CPU,运行起来结果为:

 

不过为了方便测试,我发现有个

 

于是我电脑CPU使用率就变成:

 

卧槽,说好的50%呢?而且我自己的程序控制忙闲比为50%加上系统本身以及各种软件的占用,CPU的使用比应该大于50的啊亲???

放下了手中准备砸电脑的砖头,用生锈的脑子想了一下,因为电脑4CPU工作交替规律不清楚,可能是电脑任务分配给CPU A时,BCD为空闲(或者做其余工作)以至于idle比率比较大。

 
 
 
 
 

更多推荐

JAVA控制CPU占用率(编程之美有感)(一)