为什么在嵌入式 Jetty 中使用 server.join()

Why use server.join() in Embedded Jetty

使用嵌入式 Jetty,我不明白 server.join() 的作用。

如果我删除它,什么也不会发生,我的服务器会继续工作并继续为请求提供服务。

server.join() 有什么作用?如果我删除它会怎样?在哪种情况下我想要它?

这里是来自 official Jetty documentation 的示例:


    public static void main(String[] args) throws Exception
    {
        int port = ExampleUtil.getPort(args, "jetty.http.port", 8080);
        Server server = new Server(port);
        server.setHandler(new HelloWorld());

        server.start();
        server.join();
    }

我知道这个问题已经被问过 here 但接受的答案有 -6 个投票,所以我认为值得再问一次。

调用 server.start()Server 启动了一个新线程。

调用 server.join() 是让当前线程等待服务器完成,然后再在其线程上执行下一步。

这是正常的 java.lang.Thread.join() 行为。

简而言之,它使当前线程等待它被要求加入的线程结束。

如果您在 server.join() 之后有一个动作,您会发现它在服务器线程完成之前不会执行。 (通常是由于正常关机操作)。