下面是我的run()服务器套接字线程,它将作为Executors.newWorkStealingPool().submit(() -> mainServer.run());并接受客户端连接运行。它运行良好,但Sonar抱怨它的Bug类型Loops should not be infinite (squid:S2189) class MainServer { private final ServerSocket serverSocket; private final boolean checkClientCerts; private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(MainServer.class.getName()); private final int threadPoolSize; private boolean running; private ExecutorService executorService; MainServer(int port, boolean checkClientCerts, int threadPoolSize, InetAddress bindAddress) throws IOException { LOG.debug("Locating server socket factory for SSL..."); SSLServerSocketFactory factory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); LOG.debug("Creating a server socket on port " + port); SSLServerSocket serverSocket = (SSLServerSocket) factory.createServerSocket(port, 0, bindAddress); this.checkClientCerts = checkClientCerts; this.threadPoolSize = threadPoolSize; } void run() { running = true; DefaultThreadFactory threadFactory = new DefaultThreadFactory("SSLHandshake"); executorService = new ShutdownThreadPoolExecutor(threadPoolSize,threadFactory); while (running) { Socket clientSocket; try { clientSocket = serverSocket.accept(); MainServerHandshakeThread handshakeThread = new MainServerHandshakeThread(clientSocket, this); executorService.submit(handshakeThread); } catch (IOException ex) { LOG.error("Error accepting connection",ex); } } } public void shutdown() { LOG.info("Stopping main server..."); running = false; try { if (serverSocket!=null) { serverSocket.close(); } } catch(IOException ex) { LOG.debug("Failed to close socket",ex); }有人可以帮助我如何优化上述代码块以消除声纳投诉吗?
添加回答
举报
0/150
提交
取消