cron时间表冻结

时间:2014-08-28 03:20:16

标签: java swing cron scheduled-tasks

我使用Cron在管理员指定的特定时间内安排将文件上传到服务器。我在java上创建了一个接口,用户可以选择执行上传程序的时间,并提交所选的值,一旦提交,执行以下方法:

public class Reminder {

String minute;
//static int i=0;
String heur;
String substr=",";
String patterns;
List<String> list = null;
List<String> lines = new ArrayList<>();


Timer timer;
 FTPUploadFileDemo up=new FTPUploadFileDemo();

  public void start() throws IOException {
      /************ Get the chosen values from the administrator saved in a CSV file *********************************************************/
      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();}
/**********************create cron patterns *********************************************/

        patterns="";
        for(int i=0; i<lines.size();i++) {
            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("Time selected is: "+heur+","+minute);
            patterns=patterns+minute+" "+heur+" * * *|";

        }
        System.out.println(patterns);


        // Creates the scheduler.
        Scheduler scheduler = new Scheduler();
    // Schedules the task, once every minute.
        scheduler.schedule(patterns,new RemindTask());
        scheduler.start();
        try {
            Thread.sleep(1L * 60L * 1000L);
        } catch (InterruptedException e) {
            System.out.println(e);
        }
        // Stops the scheduler.
        scheduler.stop();

    }

   class RemindTask extends TimerTask  {

      public void run() {



          up.Uplaod();



      }
    }

}

调度工作并运行但是,每次我创建的用户界面冻结时,我都不会收到任何错误,程序会继续运行,但我不能再使用该界面了。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

public void start() throws IOException {
..............
    try {
        Thread.sleep(1L * 60L * 1000L);
    } catch (InterruptedException e) {
        System.out.println(e);
    }
...............
}

为什么你暂停主线程60秒?调度程序在单独的线程中运行自己的任务,因此您不应该中断主线程的执行。

另外,尝试逐步放置断点并调试程序并本地化问题

并且不要写这样的数学运算:

1L * 60L * 1000L

足以写:

1L * 60 * 1000

此外,每次格式化代码:

  • Eclipse Ctrl + Shift + F

  • 在IntelliJ IDEA中: Ctrl + Alt + L