java - 如何让Task定时执行?

标签 java android

我有一个for循环:

for(int i=0; i<payloadList.size(); i++){
    .....
}

和一个 boolean 变量“resultOk”。我希望每个循环都在 5 秒内完成(超时)。如果在 5 秒内,“resultOk”为 true,则将移至 for 循环中的下一个。如果时间到了,就会中断for循环。 你能给我一些建议吗?怎么做?谢谢!

最佳答案

看一下这个例子(我不知道你在每种情况下想要做什么):

public static void main(String[] args) {
    ExecutorService executorService = Executors.newFixedThreadPool(1);
    for (Callable<Boolean> payload : payloadList) {
        Future<Boolean> result = executorService.submit(payload);
        try {
            if (!result.get(5, TimeUnit.SECONDS)) {
                System.out.println("result was false");
                break;
            }
        } catch (TimeoutException e) {
            System.out.println("ran into a timeout");
            result.cancel(true);
            break;
        } catch (Exception e) {
            System.out.println("something went wrong");
            break;
        }
    }
}

注意:您必须关闭 ExecutorService之后使用 shutdownNow()shutdown()。最好的方法是使用 try {} finally {} 语句,我省略了该语句以保持代码小而简单。

关于java - 如何让Task定时执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23336118/

相关文章:

java - 不可变对象(immutable对象)和不可修改集合

java - 如何创建一个循环来计算一个特定数字可以安装在另一个特定数字中的次数?

android - Android 上的 RDF 数据库

java - 在Java中生成一个长随机整数

java - SecureRandom 数字中的算法

android - 如何将增量构建添加到 Dagger 2

android - 错误的 Xamarin 形成图像维度

Android Studio 3 缺少 Android SDK

java - 通过在java中传递开始和结束日期获取给定日期的周数

java - Android - 如何处理/打开到包含非 ASCII 字符的 URL 的 http 连接?