为什么在嵌入式 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()
之后有一个动作,您会发现它在服务器线程完成之前不会执行。 (通常是由于正常关机操作)。
使用嵌入式 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()
之后有一个动作,您会发现它在服务器线程完成之前不会执行。 (通常是由于正常关机操作)。