替代Thread.Sleep()的方法

65
每隔N分钟我们希望运行一次任务列表。因此,我们创建了一个任务执行器,其中包含一个 scheduledExecutorService ,它将在计划的时间间隔内运行这些任务。
do { DoWork(); }while(!stopRequested)

现在我们想要在工作周期之间暂停。大家似乎都认为Thread.Sleep()是魔鬼。我看到有人提到使用Monitor/Event的东西,但我们没有别人告诉我们要做什么工作。我们只想每N分钟做一些事情,如钟表般准时。

所以是否有替代方案或者我已经找到了Thread.Sleep的有效用法?

另外一个帖子中的某人提到了WaitHandle.WaitOne()作为替代方案,但显然无法从非静态方法中调用它?或者至少我不能,因为我得到了编译时错误..

  

需要对象引用   ‘System.Threading.WaitHandle.WaitOne(System.TimeSpan)’的非静态字段、方法或属性

11个回答

-1
       try {
            TimeUnit.MILLISECONDS.sleep(1000L);
        } catch (InterruptedException e) {
            // handle
        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接