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