【问题标题】:Looking up the system clock -- Java查系统时钟——Java
【发布时间】:2014-10-10 00:03:20
【问题描述】:

在我的线程中,我应该每x 秒做一件事。例如。让x=3,它应该在几秒钟内做那件事1, 4, 7, ...

x 秒内创建线程wait() 是不行的——因为在x 秒内它可能会被其他事情打断 期间,因此无法跟踪在它应该的方式之间经过的时间。 因此,线程应该想出一种有效的方法来让自己知道x 秒已经过去了。

这样做的有效方法是什么?

我现在唯一的方法是继续检查系统时钟以找出它是秒 1、4 还是 7,即秒 i 哪里 i%3==1。 但是,这太浪费了,也没有任何好处。

最好的方法是什么?

TIA。

//=====================

编辑:

我认为这将是一种查找系统时钟并在每个时间间隔打断我的方法。

Java 在某处有这样的方法吗?

【问题讨论】:

  • 您在寻找Timer吗?可能是scheduleAtFixedRate 方法之一?
  • @ajb 将看到计时器。你所做的似乎也不错,但我宁愿使用 Java 所拥有的(如果有的话)

标签: java multithreading clock


【解决方案1】:

我不确定你想做什么——像这样?

boolean interrupted;
long endWait = System.currentTimeMillis() + 3000;  // or 1000 * x
do {
    interrupted = false;
    long timeRemaining = endWait - System.currentTimeMillis();
    if (timeRemaining <= 0) {
        break;
    }
    try {
        Thread.sleep(timeRemaining);
    } catch (InterruptedException e) {
        ... what you need to do when interrupted
        interrupted = true;
    }
} while (interrupted);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    相关资源
    最近更新 更多