我讨厌使用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));
}