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

如何使用Timer类调用方法,执行某些操作,重置计时器,重复执行?

欧阳意蕴
2023-03-14
问题内容

我是Java的初学者,并且一直在研究各种解决方案来解决这个问题,并且使自己陷入困境。我尝试过使用Threads,然后发现了这个Timer类,到目前为止,它一直没有成功。如果您可以
使用main方法 发布 可执行代码, 这样我就可以看到它正常工作并从那里开始玩,那将很棒。

  1. 启动程序
  2. 呼叫 doSomething()
  3. 生成随机数并设置Timer相应的时间。
  4. 定时器关闭时,doSomething()再次通话。

可能使用的是:http :
//docs.oracle.com/javase/6/docs/api/java/util/Timer.html


问题答案:

如果您只想使用Timer,则可以执行以下操作:

public class TestClass {
    public long myLong = 1234;

    public static void main(String[] args) {
        final TestClass test = new TestClass();

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                test.doStuff();
            }
        }, 0, test.myLong);
    }

    public void doStuff(){
        //do stuff here
    }
}

很抱歉,您的标识不正确。

另外,如果您需要安排代码的执行时间,请查看Guava
Services,
因为它确实可以使您的代码更加清晰,并且可以抽象出创建线程,安排时间等的样板。

顺便说一句,我没有麻烦生成随机数等,但是我认为您可以弄清楚如何包括该部分。我希望这足以使您走上正确的道路。

作为记录,如果您要使用Guava,它将看起来像这样:

class CrawlingService extends AbstractScheduledService {

    @Override
    protected void runOneIteration() throws Exception {
        //run this alot
    }

    @Override
    protected void startUp() throws Exception {
        //anything you need to step up
    }

    @Override
    protected void shutDown() throws Exception {
        //anything you need to tear down
    }


    @Override
    protected Scheduler scheduler() {
        return new CustomScheduler() {
            @Override
            protected Schedule getNextSchedule() throws Exception {
                long a = 1000; //number you can randomize to your heart's content
                return new Schedule(a, TimeUnit.MILLISECONDS);
            }
        };
    }
}

您只需创建一个名为new CrawlingService.start()的主体即可。而已。



 类似资料:
  • 我想用Java编写一个注释,它在执行带注释的方法之前和之后执行一些东西,类似于Spring中的aspects。 我已经尝试过Spring方面,但它只适用于bean(正如这家伙在这里提到的),我想保持独立于Spring框架。 将字符串写入控制台的简单类: 相关注释: 而我需要像这样的东西(由Spring相位推断) 我想要以下输出: 你好 你好吗 世界 编辑: 我创建了以下方面(没有注释),但它不起作

  • 我想在调用非公共方法(bar)后执行一些特定操作。此方法在另一个方法(foo)中调用。请注意,“bar”和“foo”都是在第三方jar文件中定义的。 我试图在面向方面的编程中使用Spring使用注释来做到这一点。然而,我不能这样做。 在调用jar文件中的特定函数之后,有人能告诉我如何做特定的事情(调用特定函数)吗?

  • 我需要重写执行程序的执行方法,我需要改变线程超过核心池大小的行为,只有当队列已满时才会创建。 然而,在实时应用程序中,这种行为是不可取的,因为它会导致队列中存在的任务无休止地等待。 我已将execute方法更改如下: 尝试实现:核心线程-

  • 批处理是重复的动作-无论是作为一个简单的优化,或作为工作的一部分。策划和归纳重复以及提供一个相当于迭代器的框架,Spring Batch提供RepeatOperations接口,这个RepeatOperations接口看起来像是这样: public interface RepeatOperations { RepeatStatus iterate(RepeatCallback callba

  • 查看编译器生成的x86程序集,我注意到(无符号)整数除法有时被实现为整数乘法。这些优化似乎遵循以下形式: 例如,执行除以9: 除以3将使用与<code>0x55555555 1</code>的乘法,依此类推。 利用< code>mul指令将结果的高部分存储在< code>edx寄存器中这一事实,可以使用与幻值的单次乘法来获得除法的最终结果。(尽管这种优化有时在最后与逐位移位结合使用。) 我想了解一

  • 我怎么能在最后运行一些逻辑,而不是收集。 我可以像 我如何在过滤后运行最后的逻辑。 谢谢,拉维