62,614
社区成员
发帖
与我相关
我的任务
分享
import java.util.*;
import java.io.*;
import java.net.*;
public class ConnectionHandler implements Runnable {
private Socket socket;
private static String stopService = "";
private static List pools = new LinkedList();
private PrintWriter log = new PrintWriter(System.err, true);
private static int checkOut = 0;
private int maxConn;
private static Service s;
private Server server;
private static boolean stop_flag = false;
public ConnectionHandler(Server server) {
this.server = server;
}
public void run() {
while (true) {
synchronized (pools) {
while (pools.isEmpty()) {
try {
// log.println("线程" + Thread.currentThread().getName() + "正等待连接......");
pools.wait();
} catch (InterruptedException e) {
log.println(e.getMessage());
}
}
socket = (Socket) pools.remove(0);
server.addConnections(socket);
checkOut++;
}
synchronized (this) {
handleConnection(socket, s);
}
}
}
public static void requestToHandler(Socket socket, Service service) {
s = service;
synchronized (pools) {
pools.add(pools.size(),socket);
pools.notifyAll();
}
}
public static int getCurrentConnections() {
return checkOut;
}
public void handleConnection(Socket socket, Service s) {
try {
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
s.serve(in, out);
server.removeConnections(socket);
checkOut--;
} catch (IOException e) {
}
}
}