【问题标题】:Timestamp, timers, time question时间戳、定时器、时间问题
【发布时间】:2011-01-19 04:19:18
【问题描述】:

我一直在谷歌上搜索 Java 时间戳、计时器以及与时间和 Java 相关的任何内容。 我似乎无法为我工作。

我需要一个时间戳来控制一个while循环,就像下面的伪代码一样

while(true)
{

    while(mytimer.millsecounds < amountOftimeIwantLoopToRunFor)
    { 
        dostuff();
    }

    mytimer.rest();  

}

任何想法我可以使用什么数据类型;我试过 Timestamp,但似乎没有用。

谢谢 夏兰

【问题讨论】:

    标签: java timestamp timer


    【解决方案1】:

    执行以下操作:

    long maxduration = 10000; // 10 seconds.
    long endtime = System.currentTimeMillis() + maxduration;
    
    while (System.currentTimeMillis() < endtime) {
        // ...
    }
    

    一个(更高级的)替代方法是使用java.util.concurrent.ExecutorService。这是SSCCE

    package com.stackoverflow.q2303206;
    
    import java.util.Arrays;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
    
    public class Test {
    
        public static void main(String... args) throws Exception {
            ExecutorService executor = Executors.newSingleThreadExecutor();
            executor.invokeAll(Arrays.asList(new Task()), 10, TimeUnit.SECONDS); // Get 10 seconds time.
            executor.shutdown();
        }
    
    }
    
    class Task implements Callable<String> {
        public String call() throws Exception {
            while (true) {
                // ...
            }
            return null;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 2010-11-22
      • 1970-01-01
      相关资源
      最近更新 更多