需求驱动开发。因为项目需要,做了一个小小的速度控制器。速度控制基本能达到要求。
import java.util.concurrent.ArrayBlockingQueue; /** * 由speed和speedUnit公共合作来表示速度 * */ public class SpeedControl { /**默认次数,30次*/ private int speed = 30; /**默认单位,每1秒钟*/ private long speedUnit = 1000 * 1; /**利用队列先进先出的特性,以及可控的容量大小控制速度*/ private ArrayBlockingQueue<Long> list = new ArrayBlockingQueue<Long>(speed); public SpeedControl() {} public SpeedControl(int speed, long speedUnit) { this.speed = speed; this.speedUnit = speedUnit; } public void control() { long startTime = 0L; long endTime = 0L; if (list.remainingCapacity() == 0) {//等于0说明缓存已满,需要检查最后时间和开始时间的差值,看是否符合要求 startTime = list.poll(); endTime = System.currentTimeMillis(); long interval = endTime - startTime; if (interval < speedUnit) {//小于说明执行速度过快,需要限速 try { long sleepTime = speedUnit - interval; Thread.sleep(sleepTime); } catch (InterruptedException e) { } } else { try { list.put(endTime); } catch (InterruptedException e) { } } } else { endTime = System.currentTimeMillis(); try { list.put(endTime); } catch (InterruptedException e) { } } } }
使用方式如下:
public class ExacteCount { private int count = 0; public void doAction() { SpeedControl control = new SpeedControl(); while (true) { control.control(); System.out.println("count = " + count++); } } public static void main(String[] args) { ExacteCount exacte = new ExacteCount(); exacte.doAction(); } }
使用比较简单。如果哪位有更好的方式,可以留下代码共同分享
相关推荐
3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3 一个回答“是”的栈检查 3.11.4 一个回答“不”的栈检查 3.11.5 doprivileged()方法 3.11.6 doprivileged()的一个无效使用 ...
ping是一个DOS命令,一般用于检测网络通或不通 ,也叫时延,其值越大,速度越慢。 PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages ...
很棒的动画效果,怎么说呢... 修正列表为空时抛出的null异常 修正列表为空时动画线程的死锁 <br>-- 2008-7-2 修正音量控制模块 (终于可以不用java自带混频器了) 必须在Line被open之后取得控制器!...
3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3 一个回答“是”的栈检查 3.11.4 一个回答“不”的栈检查 3.11.5 doPrivileged()方法 3.11.6 doPrivileged()的一个无效使用 ...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
本系统基于Java平台,采用设计模式:MVC(模型--视图--控制),采用的技术:Jsp+JavaBean+Struts+JDBC,数据库:MySQL Struts采用Struts 1.2 版本,MySQL采用MySQL5.0 <br>系统特色: 1,栏目无限级分类,形成...
很多最近的调查显示 Java 的程序运行速度比几年前要高出许多,有些同 样功能的程序的效率甚至超过了 C++和 C 语言编写的程序。Java 语言在最开始应用的时候是 没有解释层的,所有需要编译的代码都直接转换成机器的...
template模板方法模式、memento备忘录模式、observer观察者模式、command命令模式、state状态模式、strategy策略模式、mediator调停者模式、interpreter解释器模式、visitor访问者模式、chain of responsibility责任...
但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...
本设计所开发的是基于Java的一个贪吃蛇游戏软件,主要实现游戏的速度控制、游戏 的暂停、游戏的退出等功能,分为: 游戏主界面模块、游戏控制模块以二个模块。 3.1.2程序概述 本程序是一个利用Java应用软件制作的...
Blynk是一项物联网(IoT)服务,旨在使远程控制和从您的...近年来,使用微控制器和物联网设备的智能对象迅速普及。诸如Arduino或Raspberry Pi之类的开发板可用于控制一切,从家里的电源插座到运动激活的圣诞节装饰品。
(7) 电梯运行速度为S 秒/层(S 值可以根据仿真情况在1~5 之间确定),每人上下时 间为T 秒(T 值可以根据仿真情况在2~10 之间确定)。 (8) 电梯运行的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前...
java 写的文件管理系统(带注释),具有如下功能(附上直接可运行的Myexplorer.jar 和 安装版本的封装MyExplorer_setup.exe文件) 2.3基本功能:(1)文件和目录的基本操作,比如文件和目录的创建、删除、复制、移动...
/ 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 调整内存设置控制垃圾收集频率 ...
Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...
3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3 一个回答“是”的栈检查 3.11.4 一个回答“不”的栈检查 3.11.5 doPrivileged()方法 3.11.6 doPrivileged()的一个无效使用 3.12 Java...
(1)如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片Proxy来代替真正的...