繁体   English   中英

TimerTask 未执行

[英]TimerTask not executing

我正在编写一个不和谐的机器人,并想在某个时间运行一个解除禁令。 但是,即使日期在未来,也不会调用 TimerTask。 如果日期在过去,timertask 调用即时。 我试图搜索一些数据以查看日期是否错误但正确。

我想叫它一次。

        System.out.println("started");
        System.out.println(date);
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("called");
                user.openPrivateChannel().complete().sendMessage(
                        "**-Unban-**" +
                                "\n" +
                                "Du wurdest entbannt!"
                ).queue();
                guild.removeRoleFromMember(user.getId(), guild.getRoleById("690579286582624276")).queue();
                guild.addRoleToMember(user.getId(), guild.getRoleById("688733671104053327")).queue();
            }
        }, date);

控制台输出:

started
Fri Mar 20 17:21:55 UTC 2020

希望你会发现!

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Main {
    Date date = new Date();// Initialize it as per your requirement
    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        public void run() {
            System.out.println("called");
            //...
            timer.cancel();
        }
    };

    public void start() {
        timer.schedule(task, date);
    }

    public static void main(String[] args) {
        Main timer = new Main();
        timer.start();
    }
}

使用定时器应该做下一个

以固定速率调度

例子

reloj.scheduleAtFixedRate(new Reloj(), 0, 1000);

你可以做下一个

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication11;

import java.util.TimerTask;

/**
 *
 * @author Sem-6-INGENIERIAINDU
 */
public class Reloj extends TimerTask{

    @Override
    public void run() {
      // Your code
    }

}

该类实现计时器 /* * 要更改此许可证标题,请在项目属性中选择许可证标题。 * 要更改此模板文件,请选择工具 | 模板 * 并在编辑器中打开模板。 */ 包 javaapplication11;

import java.util.Timer;

/**
 *
 * @author Sem-6-INGENIERIAINDU
 */
public class JavaApplication11 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      Timer reloj=new Timer();
      reloj.scheduleAtFixedRate(new Reloj(), 0, 1000);

    }

}

结果是

运行:Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo Corriendo BUILD 1 分钟建造时间:10 秒

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM