Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Thread.sleep是需要阻塞x毫秒的操作的替代方案_Java - Fatal编程技术网

Java Thread.sleep是需要阻塞x毫秒的操作的替代方案

Java Thread.sleep是需要阻塞x毫秒的操作的替代方案,java,Java,我讨厌使用Thread.sleep,它几乎总是一个可以使用更好设计的领域的标志。然而,在这种情况下,我似乎想不出一个。我看到很多其他的问题,总有人说‘你为什么这么做’、‘你在做什么’或‘你做错了’:-) 在这里,我正在天文望远镜控制系统中实现“脉冲引导”功能。脉冲引导操作在指定的时间跨度内将底座“推”到一点北部、南部、东部或西部。通常,另一个应用程序将决定以毫秒为单位测量的“轻推”量。另一个应用程序还要求引导操作为阻塞操作,以便他们知道何时开始为下一个引导脉冲进行图像测量 所以我的代码看起来像这

我讨厌使用Thread.sleep,它几乎总是一个可以使用更好设计的领域的标志。然而,在这种情况下,我似乎想不出一个。我看到很多其他的问题,总有人说‘你为什么这么做’、‘你在做什么’或‘你做错了’:-)

在这里,我正在天文望远镜控制系统中实现“脉冲引导”功能。脉冲引导操作在指定的时间跨度内将底座“推”到一点北部、南部、东部或西部。通常,另一个应用程序将决定以毫秒为单位测量的“轻推”量。另一个应用程序还要求引导操作为阻塞操作,以便他们知道何时开始为下一个引导脉冲进行图像测量

所以我的代码看起来像这样。我怎样才能避免线程。睡在这里

/**
 * Pulse guide, move the mount at GUIDE_RATE_MOVE 
 * for the number of milliseconds passed
 *
 * @param ms number of milliseconds to move the mount
 * @param axis the Axis (RA or DEC)
 * @direction true for positive direction false for negative
 */
  public void guide(int ms, Axis axis, boolean positiveDirection) throws InterruptedException {
    serialAdapter.sendSerialCommand(new Move(mount, GUIDE_RATE_MOVE, axis, direction));
    Thread.sleep(ms);
    serialAdapter.sendSerialCommand(new Move(mount, GUIDE_RATE_STOP, axis, direction));
}  

考虑到CordReaveW.StAccExchange。COM用于工作代码。可能的副本i将使用StuteExtCutoService和调度任务。优点是你可以随时取消它们。要正确地取消睡眠要困难得多