Source Code : Manage a pool of threads for clients
Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com.
Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com.
Click Here or search from google with Libraries Name you get jar file related it
Manage a pool of threads for clients
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class PoolServerBase extends Thread {
protected Socket socket;
static PoolServerBase head = null;
protected PoolServerBase next = null;
static protected boolean init(Class clobj, int threads) {
try {
for (int i = 0; i < threads; i++) {
PoolServerBase thread = (PoolServerBase) clobj.newInstance();
thread.next = head;
head = thread;
thread.start();
}
} catch (Exception e) {
return false;
}
return true;
}
static synchronized protected void addToList(PoolServerBase me) {
me.next = head;
head = me;
}
synchronized protected void waitForSignal() {
try {
wait();
} catch (InterruptedException e) {
}
}
public void run() {
while (true) {
waitForSignal();
doClientProcessing();
addToList(this);
}
}
synchronized protected void handleClient(Socket s) {
socket = s;
notify();
}
protected void doClientProcessing() {
try {
String s = "Server.";
s += "Thread: " + this.toString();
socket.getOutputStream().write(s.getBytes());
sleep(10000); // simulate processing
s = "Complete";
socket.getOutputStream().write(s.getBytes());
socket.close();
} catch (Exception e) {
System.out.println(e);
}
}
static synchronized protected boolean listEmpty() {
return head == null;
}
static protected void assignThread(Socket sock) {
PoolServerBase t = head;
head = head.next;
t.socket = sock;
synchronized (t) {
t.notify();
}
}
static public void startServer(int port) {
ServerSocket ssock;
Socket sock;
try {
ssock = new ServerSocket(port);
while (true) {
Socket esock = null;
try {
esock = ssock.accept();
while (listEmpty())
yield();
assignThread(esock);
} catch (Exception e) {
try {
esock.close();
} catch (Exception ec) {
}
}
}
} catch (IOException e) {
}
}
static public void main(String args[]) {
init(PoolServerBase.class, 3);
System.out.println("Starting server on port 808");
startServer(808);
}
}
Thank with us