我正在使用Jsp和servlets。在我的一个jsp页面中,我将调用一个.sh文件,该文件将执行2-3分钟,并且在该过程完成后,它将重定向到另一个jsp页面。 我的问题是用户必须等待2-3分钟,然后在完成该过程后,他才会被重定向到下一页。我不希望这种情况发生我想开始必须在后台运行的进程,我希望页面能够立即重定向。
process.jsp页面
FileWriter fileWriter = new FileWriter(file3,true);
BufferedWriter bufferFileWriter = new BufferedWriter(fileWriter);
fileWriter.append(userid+"\t"+movie_id[i]+"\t"+ratings[i]);
fileWriter.append('\n');
bufferFileWriter.close();
Process p=Runtime.getRuntime().exec("/home/yoganandhd/project.sh");
p.waitFor();
response.sendRedirect("login.jsp");
在上面的代码中,要执行project.sh,它将花费3分钟来完成一些数据挖掘过程,然后只有它被重定向到login.jsp页面。 我的要求是用户不能等待3分钟,他必须通过在后台运行project.sh立即重定向到下一页。
我是一个更新鲜的我不太了解java可以有人说我怎么能实现这个? 我可以用线程来实现吗?如果有,怎么样? 有人请用相同场景的例子向我解释。
答案 0 :(得分:0)
您可以创建一个新线程并单独执行shellscript。
public class MyThread extends Thread {
public void run(){
Process p=Runtime.getRuntime().exec("/home/yoganandhd/project.sh");
p.waitFor();
}
}
现在从实际流程中调用此线程,如下所示,而不是直接调用作业。
MyThread myThread = new MyThread();
myThread .start();