Java 服务器生成新线程后,响应客户端

Java 服务器生成新线程后,响应客户端,java,multithreading,rest,Java,Multithreading,Rest,我正在开发一个具有多线程的web应用程序。其概念是客户端向服务器发送请求。服务器创建一个新线程来执行一个过程(按城镇名称删除一个foder)。 对于客户端请求和服务器响应,我使用RESTfulWeb服务 以下是服务器的代码: @GET @Path("/Data_Availability/{Town} public Response Data_availability( @PathParam("Town") String Town) th

我正在开发一个具有多线程的web应用程序。其概念是客户端向服务器发送请求。服务器创建一个新线程来执行一个过程(按城镇名称删除一个foder)。 对于客户端请求和服务器响应,我使用RESTfulWeb服务

以下是服务器的代码:

    @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()方法;如果您有其他要求(例如,如果删除需要足够长的时间来耗尽应用程序服务器的线程池,或者如果应用程序服务器对每个线程所花费的时间有限制),那么这是另一回事。