下面是我的run()服務(wù)器套接字線程,它將作為Executors.newWorkStealingPool().submit(() -> mainServer.run());并接受客戶端連接運(yùn)行。它運(yùn)行良好,但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); }有人可以幫助我如何優(yōu)化上述代碼塊以消除聲納投訴嗎?
Java 8:聲納兼容服務(wù)器套接字
慕尼黑8549860
2023-10-12 16:50:26