`
java2000.net
  • 浏览: 633475 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

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

    博客分类:
  • JAVA
阅读更多

 

 

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

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

 

public class T {

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

 

 

下面的代码可以控制比例

 /**
  * 编程之美,JAVA控制CPU的使用率(2),精确控制比例。
  * 
  * @author 赵学庆,Java世纪网(java2000.net)
  * 
  */
 public class T {

   static int busyTime = 10;
   static int idelTime = busyTime; // 50%的占有率

   public static void main(String[] args) throws Exception {
     long startTime = 0;
    while (true) {
       startTime = System.currentTimeMillis();
      while (System.currentTimeMillis() - startTime < busyTime)
         ;
       Thread.sleep(idelTime);
     }
   }
 }
 

 

下面的代码可以生成还算完美的正弦曲线

/**
 * 编程之美,JAVA控制CPU的使用率(2),完美曲线
 * 
 * @author 赵学庆,Java世纪网(java2000.net)
 * 
 */
public class T {

  public static void main(String[] args) throws Exception {
    // 角度的分割
    final double SPLIT = 0.01;
    //
    // 2PI分割的次数,也就是2/0.01个,正好是一周
    final int COUNT = (int) (2 / SPLIT);
    final double PI = Math.PI;
    // 时间间隔
    final int INTERVAL = 200;
    long[] busySpan = new long[COUNT];
    long[] idleSpan = new long[COUNT];
    int half = INTERVAL / 2;
    double radian = 0.0;
    for (int i = 0; i < COUNT; i++) {
      busySpan[i] = (long) (half + (Math.sin(PI * radian) * half));
      idleSpan[i] = INTERVAL - busySpan[i];
      radian += SPLIT;
    }
    long startTime = 0;
    int j = 0;
    while (true) {
      j = j % COUNT;
      startTime = System.currentTimeMillis();
      while (System.currentTimeMillis() - startTime < busySpan[j])
        ;
      Thread.sleep(idleSpan[j]);
      j++;
    }
  }
}
 

 

 

 

8
0
分享到:
评论
4 楼 朗拿颠老 2009-09-16  
  作为面试题
3 楼 EXvision 2008-11-03  
正弦曲线。。。太有意思了。。
2 楼 xiaocong1001 2008-11-03  
coding in art   
1 楼 nowind 2008-10-26  
哈哈,太强了,这都能想出来

相关推荐

    Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader...

    Java并发编程实战

    Java并发编程实战 本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及...

    java大学实用教程课件

    在IT行业发达的北美洲,有将近60%的软件开发人员在使用Java完成他们的工作,Evans Data公司在2002年做的一项调查中发现,在北美洲,Java的使用率已经接近 C/C++。 1.3 java 的特点 1.平台无关性 Java语言和其他...

    Java并发编程(学习笔记).xmind

    Java并发编程 背景介绍 并发历史 必要性 进程 资源分配的最小单位 线程 CPU调度的最小单位 线程的优势 (1)如果设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率 ...

    Java 什么是函数式编程.pdf

    CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。只有到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关的方法和工具也不只针对Java。假定你已经完成了分析,并且...

    Java多线程编程的优点和缺点

    更好的资源利用:多线程可以更有效地使用计算机的资源,如CPU时间、内存和文件句柄等,提高了资源利用率。 支持并发编程:多线程编程是支持并发编程的基础,可以处理多个并发任务,如服务器处理多个客户端请求。 ...

    Java 函数式编程的技巧详解.pdf

    CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。只有到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关的方法和工具也不只针对Java。假定你已经完成了分析,并且...

    Java组合式异步编程方法详解.pdf

    CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。只有到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关的方法和工具也不只针对Java。假定你已经完成了分析,并且...

    Java Lambda 环绕执行模式.pdf

    CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关的方法和工具也不只针对Java。假定你已经完成了分析,并且判断出...

    cpu-usage:具有某些编程语言的简单cpu用法脚本

    CPU使用率 具有某些编程语言的简单cpu用法脚本 如果您喜欢,请放一个 :star: 与我联系。 Edoardo Ottavianelli

    Java 面向对象和函数式编程的混合和scala的比较.pdf

    CPU 使用率、I/O 延迟、系统整体的吞吐量都必须测量和分析。只有到那时,我们才能判定到底是哪个组件导致了性能瓶颈。关于这个主题有大量优秀的资源,相关的方法和工具也不只针对Java。假定你已经完成了分析,并且...

    jsr80 java 访问 usb

    不过,Java 编程语言在设计上对硬件访问提供的支持很少,所以编写与 USB 设备交互的应用程序是相当困难的。 IBM 的 Dan Streetman 最早开始了在 Java 语言中提供对 USB 设备的访问的努力。2001年,他的项目通过 Java...

    9F83185B-E322-46C9-9CC5-DB2DB3F9127C.jpeg

    Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 1...

    java学习多线程处理

    主线程:(java中所有的线程都是java.lang.Thread类或者其子类的一个实例) 为什么要定义线程类 系统中进程包含多个线程,CPU通过分配时间片的方式管理线程,由这个新的线程来执行线程对象的run方法

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

    华为编程开发规范与案例

    在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机...

    moocoder-backend:基于GitLab、Jenkins与Docker的自动化考试系统后端部分

    基于GitLab、Jenkins与Docker的自动化编程考试系统后端部分 主要架构 特性 使用通用的Git协议 自动化测试,实时展示成绩 完全隐藏GitLab和Jenkins Docker中运行测试,隔离网络 CPU、内存资源限制 LDAP统一认证...

    Netty应用说明笔记

    4、JAVA NIO框架存在一个poll/epoll bug:Selector doesn’t block on Selector.select(timeout),不能block意味着CPU的使用率会变成100%(这是底层JNI的问题,上层要处理这个异常实际上也好办)。当然这个bug只有在...

    spring-webflux-demo:这是一个Spring的webflux演示

    响应式框架的诞生是为了提高CPU利用率,对于IO相对于占主导的Service是非常适合的,IO主导的service经常会因为等待IO而阻塞线程,导致线程数量上升,造成操作系统维护线程句柄的资源浪费。 而纯异步的开发模型能够让...

    CV全自动图形图片验证码识别软件

    可供多种可调用动态链接库的编程语言调用(vc、vb、delphi、 java、c#、vb.net、asp、模拟精 灵等),调用简单、灵活,可以通过传递文件名或图片数据流两种方式进行识别,提供函数调用说明及各种语言的调用具体实例。...

Global site tag (gtag.js) - Google Analytics