цикле вызывается метод accept. Насколько нормально в конструкторе вызывать метод addShutdownHook(). Который корректно закроет serversocket по завершении программы ?
public GambleServer(ServerSocket serverSocket,
ExecutorService threadPool,
ClientManagerFactory clientManagerFactory) {
this.serverSocket = serverSocket;
this.threadPool = threadPool;
this.clientManagerFactory = clientManagerFactory;
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}));
}
Вот пример кода.
Не очень нормально, лучше сделайте в этом GambleServer метод close(), который закроет сокет, пул потоков и прочие ресурсы. А за его вызов пусть отвечает тот, кто создаёт этот объект.
Обсуждают сегодня