手动触发Java的Timer的run()方法

时间:2014-06-20 13:48:54

标签: java

所以,我设置了我的计时器:

timer.scheduleAtFixedRate(new TimerTask()
{
    @Override
    public void run()
    {
        ...
    }
}, 5, 5);

所以我想触发这个run()来测试一些东西,而不是等到它被触发。有办法吗?

3 个答案:

答案 0 :(得分:1)

之前创建Runnable对象(不使用匿名类)并使用它创建新的Thread,然后启动它。

像这样的东西

   Runnable runnable = new Runnable() {
        @Override
        public void run() {
            /*impl*/
        }
    };

    new Thread(runnable).start();

答案 1 :(得分:1)

使用ScheduledExecutorService

// single thread pool - you can use any other scheduled thread pool
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
ses.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        /*impl*/
    }
}, 5, 5, TimeUnit.MILLISECONDS);

答案 2 :(得分:1)

为什么使用执行程序或线程? 还不够*运行方法? :)

// define task 
TimerTask = tt new TimerTask()
{
    @Override
    public void run()
    {
        ...
    }
};


// schedule 
timer.scheduleAtFixedRate(tt,int,int);

// run as any other method :) 
tt.run();

*什么时候没有运行?当我们不能或不想阻止当前线程时!