Thread.sleep替代需要阻塞x毫秒的操作

时间:2017-01-14 12:41:54

标签: java

我讨厌使用Thread.sleep,它几乎总是某种区域的标志,可以使用更好的设计。但是在这种情况下,我似乎无法想到一个。我看到了很多其他问题,并且总会有人说“你为什么要这样做?” ,'你在做什么'或者'你做错了什么? : - )

在这里,我实施了一个脉冲指导'天文望远镜控制系统的特点。脉冲指南操作&nudge'在一个指定的时间跨度内,北部,南部,东部或西部有一点点。一般来说,另一个应用程序将决定推送多少“应用程序”。它以毫秒为单位。这个其他应用程序还要求引导操作是一个阻塞操作,以便他们知道何时开始对下一个引导脉冲进行图像测量。

所以我的代码看起来像这样。我怎么能在这里避免使用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));
}  

0 个答案:

没有答案