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


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

 

  继续上次的电脑CPU控制,很遗憾更新的有点慢,虽然我知道没人看,最近项目上任务有点多,所以时间少了点,不过我是达不到目的是不会放弃的!

  上次勉强能达到有点类似于直线的CPU占用率控制图,但是这只是所有CPU的平均工作,远不能达到每个CPU都受我控制显示一条直线的程序,这几天没写博客但是也想了挺多,我想既然我电脑是4个CPU,那我创建4个实体,每个实体都跑百分之五十呢?心痛不如行动,上代码:

public static void main(String[] args) throws InterruptedException {
		
		ComputeProcess th1= new ComputeProcess();
		ComputeProcess th2= new ComputeProcess();
		ComputeProcess th3= new ComputeProcess();
		ComputeProcess th4= new ComputeProcess();
		th2.runProcess();
		th3.runProcess();
		th4.runProcess();
		th1.runProcess();
		}
	}
private static void runProcess(){
	long busyTime = 5;
	Thread th = Thread.currentThread();
	long nowSys = System.currentTimeMillis();
	while (true) {
		nowSys = System.currentTimeMillis();
		while ((System.currentTimeMillis() - nowSys) <= busyTime) {
		}
		try {
			th.sleep(5);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}
  阿西吧,想那么好但是没什么卵用啊!

JAVA控制CPU占用率(编程之美有感)(二)_第1张图片

  发了一会呆,突然想起来,我创建实体没什么卵用啊,并不影响CPU的工作啊啊啊啊,应该创建线程试试的啊~~果断让程序继承了Thread类,并重写了run方法,让run去调用runProcess,不要问我为什么不在run方法里面写,因为我懒!!!然后把所有的th_.runProcess()改成th_.start(),再看一下效果图:

JAVA控制CPU占用率(编程之美有感)(二)_第2张图片

  哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈!

  终于有希望了啊啊啊啊啊啊啊啊!

下面就是考虑要控制计算机的内存了,这样只是自己手动配置busy和idle比率为50%但是系统本身就会运行好多内存,所以这个比例一直会大于50.从网上搜了一下可以使用sigar进行查看系统的信息:

   使用sigar来监控,简单方便!
   使用说明:以下代码需要配合sigar的dll文件来用,需要将dll文件放到JDK下的bin文件夹下。

   原文:点击打开链接。原文中没有sigar下载地址,不过有需要的话可以私信或者发邮件给我我给你发[email protected].

   下面是使用siger的控制台得到的信息:

JAVA控制CPU占用率(编程之美有感)(二)_第3张图片



你可能感兴趣的:(随笔乱码)