当前位置: 首页 > 知识库问答 >
问题:

计划在Java中多次启动一个方法

轩辕嘉平
2023-03-14

我正在开发一个程序,在管理员指定的特定时间将文件上传到服务器,管理员输入多个值(小时、分钟)。

例子:

[Hours,Minutes]=  [2,12] [ 2,15],[ 5,20 ] 

我将这些值保存在CSV文件中。

  BufferedReader reader;
        try {
            reader = new BufferedReader(new FileReader("C:/Users/BACKENDPC1/Desktop/timer.csv"));


    String line = null;
    while ((line = reader.readLine()) != null) {
        lines.add(line);


    }} catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();}

        //Get the Date corresponding to 11:01:00 pm today.
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH");
         Format formatter = new SimpleDateFormat("m");
         Format sec=new SimpleDateFormat("s");

        /*heur=getList().get(i).substring(0, getList().get(i).indexOf(substr));
        minute=getList().get(i).substring(getList().get(i).indexOf(substr) + substr.length());
        System.out.println("Time selected is: "+heur+","+minute);*/
        while (i<lines.size()) {
            heur=lines.get(i).substring(0, lines.get(i).indexOf(substr));
            minute=lines.get(i).substring(lines.get(i).indexOf(substr) + substr.length());
            System.out.println(sdf.format(calendar.getTime()));
            System.out.println(Integer.parseInt(formatter.format(new Date())));
            if(Integer.parseInt(sdf.format(calendar.getTime()))==Integer.parseInt(heur)&&(Integer.parseInt(formatter.format(new Date()))==Integer.parseInt(minute))){


        System.out.println(Integer.parseInt(heur)+"H"+ Integer.parseInt(minute));

        calendar.set(Calendar.HOUR_OF_DAY,Integer.parseInt(heur) );
        calendar.set(Calendar.MINUTE, Integer.parseInt(minute));
        calendar.set(Calendar.SECOND, 0);
        Date time = calendar.getTime();

        timer = new Timer();
        timer.schedule(new RemindTask(), time);
        i++;
            }}
        i=1;

        start();


        /*  timer = new Timer();
        timer.schedule(new RemindTask(), seconds*1000);*/
    }

    class RemindTask extends TimerTask  {

      public void run() {


          up.Uplaod();

        long start = new Date().getTime();
            long end=0; 
            int numIndexed=0;
            boolean cond=true;
            end = new Date().getTime();
            cond=false;

           // System.out.println("Indexing " + numIndexed + " files took "
             // + (end - start) + " milliseconds");

            timer.cancel(); 
            //Terminate the timer thread    

      }

我运行此方法来安排上传的执行。它工作了两次,之后我收到一个错误:

java线程“AWT-EventQueue-0”中出现异常。lang.NumberFormatException:用于输入字符串:java的“小时”
。lang.NumberFormatException。java上的forInputString(未知源)
。整型。java上的parseInt(未知源代码)
。整型。parseInt(未知源)
在提醒时。在提醒时启动(remention.java:64)
。从csvFileUploadMulti$4开始(remention.java:80)
。在javax上执行的操作(csvFileUploadMulti.java:269)
。摆动抽象按钮。fireActionPerformed(未知源)
在javax上执行。摆动AbstractButton$Handler。在javax上执行的操作(未知源)
。摆动DefaultButtonModel。fireActionPerformed(未知源)
在javax上执行。摆动DefaultButtonModel。在javax上设置按下(未知源)
。摆动普拉夫。基本的基本按钮列表。java上的MouseRelease(未知源)
。awt。组成部分javax上的processMouseEvent(未知源)
。摆动JComponent。java上的ProcessMouseeEvent(未知源)
。awt。组成部分java上的processEvent(未知源)
。awt。容器java上的processEvent(未知源)
。awt。组成部分java上的dispatchEventImpl(未知源)
。awt。容器java上的dispatchEventImpl(未知源)
。awt。组成部分java上的dispatchEvent(未知源)
。awt。轻量级调度员。java上的RetargetMouseeEvent(未知源)
。awt。轻量级调度员。java上的ProcessMouseeEvent(未知源)
。awt。轻量级调度员。java上的dispatchEvent(未知源)
。awt。容器java上的dispatchEventImpl(未知源)
。awt。窗java上的dispatchEventImpl(未知源)
。awt。组成部分java上的dispatchEvent(未知源)
。awt。事件队列。java上的dispatchEventImpl(未知源)
。awt。事件队列。在java上访问400美元(未知来源)
。awt。事件队列3美元。在java上运行(未知源)
。awt。事件队列3美元。在java上运行(未知源)
。安全访问控制器。java上的doPrivileged(本机方法)
。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源)
。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源)
。awt。事件队列4美元。在java上运行(未知源)
。awt。事件队列4美元。在java上运行(未知源)
。安全访问控制器。java上的doPrivileged(本机方法)
。安全ProtectionDomain 1美元。java上的doIntersectionPrivilege(未知源)
。awt。事件队列。java上的dispatchEvent(未知源)
。awt。EventDispatchThread。java上的pumpOneEventForFilters(未知源)
。awt。EventDispatchThread。pumpEventsForFilter(未知源)
位于java。awt。EventDispatchThread。pumpEventsForHierarchy(未知源)
位于java。awt。EventDispatchThread。java的pumpEvents(未知源)
。awt。EventDispatchThread。java的pumpEvents(未知源)
。awt。EventDispatchThread。运行(未知来源)

谁能帮帮我吗?

共有1个答案

茅华灿
2023-03-14

不要重新发明轮子。试试cron。

 类似资料:
  • 我有一个spring boot应用程序,我需要每20秒刷新一次,所以我创建了这个: 它工作得很好,但当我向数据库中添加行时,在它为空之前,我想再次将计时器重置为20秒,有办法吗?

  • 问题内容: 我目前正在通过Eclipse编写GWT应用程序。Eclipse用于开发,但是我使用m2eclipse插件和带有GWT插件的Maven pom.xml来构建和运行它。 当我需要调试应用程序时,我必须: 在Maven项目上调用“运行方式…”(通过m2eclipse)“ war:exploded gwt:debug”。这将启动GWT的应用程序服务器,并等待端口3408上的远程调试连接。需要等

  • 3.2 第一次启动 第一次启动后,会进入如下页面: 第一次启动没有任何数据,请按照提示初始化数据。 由于站点信息依赖Nginx集群信息、集群信息,所以请完成站点依赖的Nginx集群信息、业务集群信息配置后,再配置站点信息。

  • 我想使用Laravel/plan Facade创建一次性付款计划。我可以创建月度、年度计划,但我不知道如何实现一次性付款计划,因为我们可以在stripe dashboard上创建产品时创建一次性付款计划。下面是我创建每月、每年、每周或每天但不是终身/一次性付款的代码。

  • 我是新的詹金斯,我有一个詹金斯的工作,有两个配置文件。我想定期安排这项工作,例如第一个配置文件运行在晚上8点,第二个在晚上10点。请指教。

  • 我有一个使用Spring kafka库的Spring启动应用程序的消费者。我想为每个消费者线程设置租户上下文,即在创建每个线程时调用一个方法(创建时每个线程只调用一次)。目前,我已将其添加到listner中,其中对方法有@KafkaListner注释,但它每次轮询并处理每条记录时都会调用它。我想在消费者线程启动时调用此方法一次。如果我们有任何这样的事情,请在这里帮助我。