编程之美-JAVA控制CPU的使用率

JAVA代码,里面的循环和休眠时间,请根据你的机器情况修改,我的大致能稳定在43-44%之间。

这个是粗的代码,后面我会继续完善,实现那个完美曲线。

Java代码

public class T {

   public static void main(String[] args) throws  Exception {
     for (;;) {
      for (int i = 0; i <  96000000; i++)
         ;
      Thread.sleep(10);
     }
    }
 }

时间: 2025-01-19 10:19:05

编程之美-JAVA控制CPU的使用率的相关文章

通过编程控制CPU利用率

今天想起一个几年前学习过的程序,是在<编程之美>中提到的,是作为当时微软的面试题,写一个程序来控制CPU的利用率保持在50%,进一步延伸,能够写出程序来画出CPU利用率的正弦曲线. 这个题目看起来真是奇怪,能够达到这种程度,编程感觉就是出神入化了,但是仔细看看这个题目还是有一些依据可循,也有点小聪明的意思. 首先,对我们来说,能够直观感受CPU利用率就是通过任务管理器来得到的,我们可以大体的观察得到,基本上刷新CPU利用率的情况是按照秒来更新的,任何额外的操作都可能造成CPU的抖动,比如我打开

2013编程之美资格赛之长方形(Java实现)

长方形 时间限制: 1000ms 内存限制: 256MB 描述 在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子,每个石子都只能放在网格的交叉点上.问在最优的摆放方式下,最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子. 输入 输入文件包含多组测试数据. 第一行,给出一个整数T,为数据组数.接下来依次给出每组测试数据. 每组数据为三个用空格隔开的整数 N,M,K. 输出 对于每组测试数据,输出一行"Case #X: Y",其中X表示测试数据编号,Y表示

2013编程之美资格赛之树上的三角形(Java实现)

树上的三角形 时间限制: 2000ms 内存限制: 256MB 描述 有一棵树,树上有只毛毛虫.它在这棵树上生活了很久,对它的构造了如指掌.所以它在树上从来都是走最短路,不会绕路.它还还特别喜欢三角形,所以当它在树上爬来爬去的时候总会在想,如果把刚才爬过的那几根树枝/树干锯下来,能不能从中选三根出来拼成一个三角形呢? 输入 输入数据的第一行包含一个整数 T,表示数据组数. 接下来有 T 组数据,每组数据中: 第一行包含一个整数 N,表示树上节点的个数(从 1 到 N 标号). 接下来的 N-1

《编程之美》读书笔记(四): 卖书折扣问题的贪心解法

  <编程之美>读书笔记(四):卖书折扣问题的贪心解法        每次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话,需要的时间可能更长,真是搞不懂通过微软面试的那些家伙的脑袋到底什么构造,书的序言中提到他们每次面试45分钟,还要写出程序?!在我看来,如果是控制CPU曲线或是中国象棋问题或许还有可能,如果是买书折扣问题,我觉得真的是不太容易,尤其是如果当面试者钻进本题的贪心解法而不是动态规划算法的思路之后,

聊聊Java和CPU的关系_java

其实写Java的人貌似和CPU没啥关系,最多最多和我们在前面提及到的如何将CPU跑满.如何设置线程数有点关系,但是那个算法只是一个参考,很多场景不同需要采取实际的手段来解决才可以:而且将CPU跑满后我们还会考虑如何让CPU不是那么满,呵呵,人类,就是这么XX,呵呵,好了,本文要说的是其他的一些东西,也许你在java的写代码时几乎不用关注CPU,因为满足业务才是第一重要的事情,如果你要做到框架级别,为框架提供很多共享数据缓存之类的东西,中间必然存在很多数据的征用问题,当然java提供了很多conc

在MTK芯片上如何控制CPU的核数和频率-MTK PerfService

在MTK芯片上如何控制CPU的核数和频率-MTK PerfService 一句话:PerfService就是用来调整CPU/GPU资源的.对于老的API,可以更简单地讲就是调CPU核数和CPU频率的. PerfService简介 kernel中实现了两个driver,一个负责控制开关CPU的核数,叫做hot-plug驱动,另一个负责调整CPU的频率,叫做DVFS驱动. kernel中的driver会根据系统的负载情况下,自动调整使用几个CPU和调整CPU频率.如果负载高了,提高频率,或者多开几个

java在CPU中的一些个破事

其实写java的人貌似和CPU没啥关系,最多最多和我们在前面提及到的如何将CPU跑满.如何设置线程数有点关系,但是那个算法只是一个参考,很多场景不同需要采取实际的手段来解决才可以:而且将CPU跑满后我们还会考虑如何让CPU不是那么满,呵呵,人类,就是这么XX,呵呵,好了,本文要说的是其他的一些东西,也许你在java的写代码时几乎不用关注CPU,因为满足业务才是第一重要的事情,如果你要做到框架级别,为框架提供很多共享数据缓存之类的东西,中间必然存在很多数据的征用问题,当然java提供了很多conc

2013编程之美全国挑战赛第二场-集会

昨天做编程之美的题感觉只有这一道是水题.思路没问题但是写程序写错了一个地方没AC.今天翻出来想了一下终于解决了. 解题思路: 要寻找的这个目标点的纵坐标为0,设横坐标为x.以示例数据为例,可以得到目标点到这些点的距离,更直观一点,绘制成图形点击查看.观察可知符合要求的点可能出现的位置是某两个抛物线的交点或者某个抛物线的顶点.求出这些点来比较计算出的距离,取最小的即可.没机会提交的代码如下: import java.util.Scanner; public class Main { public

编程之美之字符串移位包含问题

[题目] 给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含.例如,S1=AABCD和s2=CDAA,返回true:给定s1=ABCD和s2=ACBD,返回false. [分析] [思路一] 从题目中可以看出,我们可以使用最直接的方法对S1进行循环移动,再进行字符串包含的判断,从而遍历其所有的可能性. 字符串循环移动,时间复杂度为O(n),字符串包含判断,采用普通的方法,时间复杂度为O(n*m),总体复杂度为O(n*n*m). 字符串包含判断,若采