当前位置: 首页 > 面试题库 >

使程序运行5分钟

魏誉
2023-03-14
问题内容

因此,我想尝试一下Timer和TimerTask类。

30秒过后,我能够执行一行代码。我现在一直想做的是让这行代码执行5分钟。

这是我最初尝试的

public static void main(String[] args)
{
    for ( int i = 0; i <= 10; i ++ )
    {
        Timer timer = new Timer();
        timer.schedule( new TimerTask()
        {
            public void run()
            {
                System.out.println("30 Seconds Later");
            }
        }, 30000
        );
    }   
}

我在for循环中使用了数字10,以查看timer.schedule在循环的下一次迭代期间是否还要再等待30秒。

知道我应该怎么做吗?我尝试将schedule方法与传入参数period一起使用,但这只是使其重新执行而从未停止过。


问题答案:

您遇到的问题是,计划的Timer运行在不同的线程上-
也就是说,for循环的下一次迭代在计划后立即开始运行,而不是在30秒后开始。看起来您的代码一次全部启动了10个计时器,这意味着它们应该在30秒后一次全部(大约)打印。

尝试使用schedule(带有第三个参数的)循环版本时,您处在正确的轨道上。如您所述,这不是您想要的,因为它可以无限期运行。但是,Timer
确实 有一种cancel方法可以防止后续执行。

因此,您应该尝试类似的方法:

final Timer timer = new Timer();
// Note that timer has been declared final, to allow use in anon. class below
timer.schedule( new TimerTask()
{
    private int i = 10;
    public void run()
    {
        System.out.println("30 Seconds Later");
        if (--i < 1) timer.cancel(); // Count down ten times, then cancel
    }
}, 30000, 30000 //Note the second argument for repetition
);


 类似资料:
  • 问题内容: 我有要求在5分钟内运行一会儿循环。我寻找了计时器api,但找不到这样做。任何人都可以为此提供代码摘要。 谢谢 问题答案: 最简单的方法是只检查每次迭代已花费了多少时间。例: 这将运行循环,直到超过5分钟为止。 笔记: 当前循环迭代将始终完成,因此在实践中它将始终运行5分钟以上。 对于此应用程序而言,它比之更合适,因为如果调整了计算机的系统时钟,后者将发生变化,从而使计算工作中断。 感谢

  • Debian 开发人员配置了几种在不同硬盘和不同体系结构上的分区程序。下面是一个适合你的结构的程序 列表。 partman 推荐的 Debian 分区工具。这个小而全的工具也可以创建文件系统 (在 Windows 下的说法是 "格式化" speak) 。 以及联系分区至挂接点。 fdisk 原始版本的 Linux 磁盘分区工具,对于高手很好用;请阅读 fdisk 手册页 . 这里注意如果你的机器上

  • Debian 开发人员配置了几种在不同硬盘和不同体系结构上的分区程序。 下面是一个适合你的结构的程序列表。 partman 推荐的 Debian 分区工具。这个小而全的工具可以修改分区大小,创建文件系统 以及联系分区至挂接点。 cfdisk A simple-to-use, full-screen disk partitioner for the rest of us; read the cfdi

  • Debian 开发人员配置了几种在不同硬盘和不同体系结构上的分区程序。 下面是一个适合你的结构的程序列表。 partman 推荐的 Debian 分区工具。这个小而全的工具可以修改分区大小,创建文件系统 以及联系分区至挂接点。 cfdisk A simple-to-use, full-screen disk partitioner for the rest of us; read the cfdi

  • 我试图在scala jdbc程序上运行分析查询,如下所述。 该表位于postgres上,我正在创建程序的jar,并从命令行运行它,如下所示。 代码没有给出任何错误,但我看到resultset对象的结果为false,如下所示: 查询不会失败,因此在运行时没有异常。给定的表也存在于数据库中,它们包含数据。但是我打印了结果集对象,看到布尔值。这意味着分析查询失败了,还是应该以其他方式运行?可以让我知道我

  • 问题内容: 我看了一些其他的SO问题,没有找到任何解决我问题的方法…我有一个Main.java文件(如下)和一个OthelloLib.jar文件,没有关联的源文件。 运行失败,并 还有更多错误。SimplePlayer和BetterPlayer在jar中定义。我如何告诉Java这个罐子?这个命令:不会引起错误,但是我仍然不知道如何运行程序。如果我运行,java会抱怨: 但是TimeoutExcep