由于并发不当行为,服务器未正常关闭

Server is not shutting down gracefully due to concurrency malpractice

我有一个基于 Grizzly NIO 的简单服务器。我starting/shutting把它弄下来如下,请注意关闭方法附近的注释:

public class MyServer {

public static void main(String[] args) {
    try {

        HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create("someURL"), resourceConfig, false);
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            server.shutdownNow();
        }));

        server.start();
        Thread.currentThread().join();
        server.shutdown(); //this line is never reached
    } catch (IOException | InterruptedException ex) {
        //exception handling
    }
}
}

当我终止服务器时,它会立即关闭,因为永远不会到达 server.shutdown() 行,而不是以一种优雅的方式。话虽如此,我试图实现一个关闭挂钩,但它也没有被调用。我怀疑我的 join() 实现但不确定。任何帮助实现正常关机的帮助将不胜感激。

Thread.currentThread().join() 将永远阻塞。它正在等待自己完成但无法完成,因为它正在等待自己完成。