Han*_*ans 1 java loops port-scanning
在程序(Java)中,我需要检查并行端口中的特定引脚.每当该引脚从逻辑0变为1(正边沿时钟)时,我必须读取端口上的数据并保存它.这种情况大约每10毫秒发生一次,但可能会有所不同.
为了做到这一点,我用一个不断检查端口的while循环创建了一个单独的线程,但这使得处理器变得疯狂,我知道这是因为while循环.我的问题是,如何在不使用处理器密集的while循环的情况下不断扫描端口?该程序并不准确知道何时发生引脚更改,只是它发生在每10ms左右.
触发计划以Runnable固定速率执行给定的线程.你可以使用Timer#scheduleAtFixedRate()或ScheduledExecutorService#scheduleAtFixedRate()为此.最后一个是首选.
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new PortScanner(), 0, 10, TimeUnit.MILLISECONDS); // Run every 10 ms.
Run Code Online (Sandbox Code Playgroud)
哪里PortScanner可以这样:
public class PortScanner implements Runnable {
@Override
public void run() {
// Scan port here.
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记scheduler.shutdown()在应用程序退出时调用,否则线程可能会挂起.
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |