listenerthread.java
来自「java jdk 1.4的源码」· Java 代码 · 共 109 行
JAVA
109 行
/* * @(#)ListenerThread.java 1.40 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.corba.se.internal.iiop;import java.net.InetAddress;import java.net.Socket;import java.net.SocketException;import java.net.ServerSocket;import java.io.IOException;public class ListenerThread extends Thread { protected static final int MAX_CLEANUP_RETRIES=5; protected ServerSocket serverSocket; protected ConnectionTable connectionTable; protected String socketType; private boolean keepRunning = true; ListenerThread(ConnectionTable connectionTable, ThreadGroup g, ServerSocket serverSocket, String socketType) { super(g, "JavaIDL Listener"); this.serverSocket = serverSocket; this.connectionTable = connectionTable; this.socketType = socketType; } public ListenerThread(ConnectionTable connectionTable, ServerSocket serverSocket, String socketType) { super("JavaIDL Listener"); this.serverSocket = serverSocket; this.connectionTable = connectionTable; this.socketType = socketType; } public ServerSocket getSocket() { return serverSocket; } public void run() { int tries = 0; // Loop forever listening for incoming connections. while (keepRunning) { try { // Accept an incoming connection request Socket socket = serverSocket.accept(); // set socket to disable Nagle's algorithm (always send immediately) try { socket.setTcpNoDelay(true); } catch (Exception e) { } // Create a Connection instance and process incoming request Connection conn = connectionTable.getConnection(socket, socketType); tries = 0; // Check if #connections > HighWaterMark, if so cleanup. // This prevents incoming connections from being rejected // because of TCP/IP or OS network connection limits. connectionTable.checkConnectionTable(); } catch (SocketException ex) { // An exception was thrown by the accept() call. // This probably means that we have run out of network // connections. if (tries == MAX_CLEANUP_RETRIES) { // We tried closing existing connections but that didnt help // So it must be some unknown networking problem. continue; } // Clean up some existing connections. if (!connectionTable.cleanUp()) { // Could not close any connections :-( continue; } tries++; } catch (Exception ex) { } } } synchronized void shutdown() { keepRunning = false; try { serverSocket.close(); } catch (IOException ioex) {} }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?