JAVA控制CPU占用率(编程之美有感)(一)
自从看完编程之美的第一篇问题分析,内心十分触动:这是什么鬼?还能这样玩?之前对CPU的占用率只局限于:
“卧槽,我内存满了,电脑卡死了”。
“擦!死循环了,这破代码!”。
“这破游戏这么占内存啊!”。
从了解了编程之美的第一节就感觉到了编程之美的美之所在,将天下之物为我所控,Everything is Object,Object is me。当然这只是一个我玩笑,只是表达我对java的强悍又一认识。
好了闲话少说,下面进入正题。
在编程之美中对系统CPU占用率的分析简直不能再深入,由浅开始,从电脑的CPU内存比的含义开始入手,到如何控制电脑CPU的内存占用率为50%,到动态获取每个电脑的运行内存,以及最后如何让电脑画出一个优美的正弦曲线,都有很深入的分析,看的我触动很大,遍生出了自己去尝试的想法。下面是我自己的实践历程。
打开心爱的Eclipse之后新建了一个Java Project,开始尝试,书上的代码开始很简单,也很容易理解,就是控制下系统的“busy”,和“idle”,那就写下如下代码(假设busy和idle时间为),假设忙闲的时间为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); } }
后来发现,马丹我自己电脑有4个CPU,运行起来结果为:
不过为了方便测试,我发现有个
于是我电脑CPU使用率就变成:
卧槽,说好的50%呢?而且我自己的程序控制忙闲比为50%加上系统本身以及各种软件的占用,CPU的使用比应该大于50的啊亲???
放下了手中准备砸电脑的砖头,用生锈的脑子想了一下,因为电脑4核CPU工作交替规律不清楚,可能是电脑任务分配给CPU A时,BCD为空闲(或者做其余工作)以至于idle比率比较大。
更多推荐
JAVA控制CPU占用率(编程之美有感)(一)
发布评论