我使用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();
}
}
}
调度工作并运行但是,每次我创建的用户界面冻结时,我都不会收到任何错误,程序会继续运行,但我不能再使用该界面了。任何人都可以帮助我。
答案 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