转:怎样让cpu的使用率为一条直线 (Java实现)

原文链接:http://www.iteye.com/problems/24993

 

最近在一本叫编程之美的书上看到这样一个问题,怎样使你的cpu的使用成为一条直线。书上的代码是这样的
需要cpu的时钟频率 且计算机执行代码是平均每个时钟频率执行两行代码
结果 如果是一个主频为 2.4Ghz的cpu
那么 循环次数是 2.4*1000 000 000 *2/5 = 96 000 000
对于计算机的休眠,如果sleep(1000)(即休眠1秒)效果不是很明显,减少一个数量级,即sleep(10),

 

int main(){
   
    for(;;){
       for(int i=0;i<960000;i++){
             ;
             sleep(10);
       }
    return 0;
   }

 

上面的代码是简写式的,可能有语法错误,希望高手给说说如何用java语言控制cpu的使用率为一条直线

如果是双cpu呢 怎么控制用一个cpu来执行程序,还有我试过了,没有达到书上说的要求。

刚才在网上搜了下,找到答案了,共同学习下

public class CPUTest {   
		public static void main(String[] args) {    
		int busyTime = 10;    
		int idleTime = busyTime;    
		long startTime = 0;    
		while (true) {     
			startTime = System.currentTimeMillis();     // busy loop
		while ((System.currentTimeMillis() - startTime) <= busyTime)      ;     // idle
																				// loop
			try {      
				Thread.sleep(idleTime);     
				} 
			catch (InterruptedException e) {      
				System.out.println(e);     
				}    
		}  
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值