Java 服务器生成新线程后,响应客户端
我正在开发一个具有多线程的web应用程序。其概念是客户端向服务器发送请求。服务器创建一个新线程来执行一个过程(按城镇名称删除一个foder)。 对于客户端请求和服务器响应,我使用RESTfulWeb服务 以下是服务器的代码:Java 服务器生成新线程后,响应客户端,java,multithreading,rest,Java,Multithreading,Rest,我正在开发一个具有多线程的web应用程序。其概念是客户端向服务器发送请求。服务器创建一个新线程来执行一个过程(按城镇名称删除一个foder)。 对于客户端请求和服务器响应,我使用RESTfulWeb服务 以下是服务器的代码: @GET @Path("/Data_Availability/{Town} public Response Data_availability( @PathParam("Town") String Town) th
@GET
@Path("/Data_Availability/{Town}
public Response Data_availability(
@PathParam("Town") String Town) throws Exception{
Delete_Dir Procedure = new Delete_Dir();
Thread thread = new Thread(Procedure);
thread.Start();
return Response.ok("Done").build(); // Normally here is the response. But since I create
// a new thread this will be always "Done"
}
下面是程序代码:
public class Delete_Dir implements Runnable{
String Town;
public void run() {
try {
execute();
} catch (Exception e) {
e.printStackTrace();
}
}
public Delete_Dir( String Town_ ){
Town = Town_;
}
public void execute(){
try{
File file = new File("c://" + Town);
FileUtils.deleteDirectory(file);
}catch (Exception e){
e.printStackTrace(System.out);
}
}
}
如何通过Delete_Dir类响应客户机??由于我创建了一个新的线程,如果我将响应放在上面,它将始终是“完成”的 为什么不等待execute方法完成呢?服务器将自行线程处理所有传入的请求,您可以用实际结果进行响应。我如何检查线程何时完成??例如,我尝试了线程。sleep(500);然后更改变量result=“done”;它起作用了,但我不想用500毫秒。我最好在线程完成时更新。命令是什么?不要使用线程;只需执行一个Procedure.execute()而不是使用线程。如果这样做,则不会以多线程方式运行。请求将仅在一个线程的行中。我想并发执行请求,应用服务器本身是多线程的,多线程并发调用Data_availability()方法;如果您有其他要求(例如,如果删除需要足够长的时间来耗尽应用程序服务器的线程池,或者如果应用程序服务器对每个线程所花费的时间有限制),那么这是另一回事。