需求驱动开发。因为项目需要,做了一个小小的速度控制器。速度控制基本能达到要求。
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. **自动完成和提示**:编辑器可能包含代码自动完成和智能提示功能,有助于快速输入常见的Java语句和类库方法,减少错误并提高编码速度。 4. **实时错误检查**:在编写过程中,编辑器可能会有实时语法检查功能,...
Java的`Thread`类和`ExecutorService`接口可以创建和管理线程,确保系统性能和响应速度。 5. **加密与安全**: 远程控制涉及敏感信息,因此必须确保通信的安全性。Java提供SSL/TLS协议支持,可以对数据进行加密...
总结来说,Java实现流量控制涉及多方面,包括基本的Socket缓冲区设置、NIO的选择器和通道、自定义协议以及线程管理和第三方库的支持。开发者可以根据实际需求选择合适的方法来实现流量控制,确保网络通信的稳定性和...
- **模型-视图-控制器(MVC)设计模式**:将数据模型、用户界面和控制逻辑分离,提高代码的可维护性和可扩展性。 4. **优化与性能**: - 使用`DocumentFilter`控制用户输入,限制字符数量或格式,提高用户体验。 ...
本文作者杨仕伟来自贵州师范学院物理与电子科学学院,其研究方向涉及微电子和固体电子,深入研究了如何将Java嵌入式设备应用到节能控制器的设计中。杨仕伟先生的方案设计有助于在资源日益紧张的背景下,为提升能效和...
在Java编程语言中,我们可以利用Swing或JavaFX库来创建具有交互性的用户界面,比如一个包含滑条(slider)的窗口,通过滑条来控制小球的颜色、大小和速度。这个项目是一个典型的图形用户界面(GUI)应用程序,用于...
在Java编程中,控制CSS样式的读写是一项重要的任务,特别是在构建动态网页或者服务器端渲染时。CSS(层叠样式表)是用于定义HTML或XML(包括如SVG、MathML等各种XML方言)文档呈现的样式语言,而Java作为后端语言,...
Java编写的简易PID模拟是一个基于Java编程语言实现的控制系统设计工具,主要目的是为了理解和实践PID(比例-积分-微分)控制器的工作原理。PID控制器是一种广泛应用的自动控制算法,广泛存在于工业自动化、机器人...
通过学习和实践这个Java多线程端口扫描器项目,开发者不仅可以深化对Java多线程编程的理解,还能掌握网络通信和并发控制的关键技能。此外,对于网络安全分析和服务器管理等领域也有实际的应用价值。
本文将深入探讨如何实现一个简单的Java下载器,并且重点讲解如何实现下载的实时进度显示和速度计算。以下是对这个主题的详细阐述: 一、基础准备 在开始编写Java下载器之前,我们需要了解HTTP协议的基本概念,因为...
**JAVA窗体抢答器详解** Java窗体抢答器是一种基于Java编程语言设计的应用程序,主要用于实现多人之间的在线竞赛答题场景。它通常由两部分组成:服务器(Server)和客户端(Client)。服务器负责管理比赛规则、接收...
Java多线程下载器是一种利用Java编程语言实现的高效文件下载工具,它通过将大文件分割成多个部分并同时下载,显著提高了下载速度。在Java中实现多线程下载器涉及许多关键概念和技术,包括线程、并发控制、网络I/O...
- **缓存控制**:对静态资源进行缓存控制,提高响应速度。 - **字符编码过滤**:解决乱码问题,确保请求和响应的字符编码一致。 在提供的文件`webPro1`中,可能包含了实际的Servlet过滤器示例代码或其他与Web应用...
在IT行业中,Java程序与PLC(可编程逻辑控制器)之间的通信是一个重要的技术领域,尤其在工业自动化系统中。这个主题涉及到如何利用编程语言与硬件设备进行数据交换,以实现远程控制、监控或数据采集等功能。以下是...
### Java类加载器详解 Java类加载器是Java运行时环境的一个关键组成部分,负责将类文件(.class)从各种来源加载到JVM中。它不仅管理类的生命周期,还确保了类的正确加载和初始化,是Java动态特性的基石。 #### 类...
过滤器能够拦截请求和响应,对数据进行预处理或后处理,从而实现诸如权限控制、字符编码转换、日志记录等多种功能。 过滤器的工作原理是基于Servlet规范中的Filter接口。当用户向服务器发送请求时,Filter会在...
4. **缓存控制**:对静态资源进行缓存控制,提高响应速度。 5. **日志记录**:记录请求和响应的详细信息,便于调试和问题定位。 通过上述内容,我们了解了Java过滤器的基本原理、创建过程以及常见的应用场景。实践...
Java编程语言是软件开发领域的重要组成部分,而一个优秀的Java编辑器是提高开发效率的关键工具。在众多的Java编辑器中,有一些因其强大的功能和易用性而受到开发者们的喜爱。"java编辑器 很好用"这个标题所指的是...
【Java端口扫描器】是一种基于Java编程语言实现的工具,用于检测网络上特定主机的开放端口。端口扫描是网络安全评估中的一个重要步骤,它可以帮助我们了解网络服务的状态,发现潜在的安全漏洞。 在Java中实现端口...
Java代码生成器MyBatis是一种高效实用的工具,它能够帮助开发者自动生成Java源代码,大大简化了基于MyBatis框架的开发工作。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。通过使用代码...