Good Day,TCP ThreadPool (адрес уже используется)
Я реализовал threadpool, который принимает Runnable Object. В принципе, я строю простую реализацию сервера, которая должна обрабатывать запросы. Код:
public static void main(String[] args) {
// Assign your no. of thread to create
int noOfProcess = 5;
// Assign your own thread pool size
int poolMaxSize = 2;
// Creating Threadpool with the thread size given above
MyThreadPool threadPool = new MyThreadPool(poolMaxSize);
// Creating threadpool Object
ThreadPoolTester obj = new ThreadPoolTester();
for (int i = 0; i < noOfProcess; i++) {
threadPool.process(obj.startProcess(i));
}
// Finally waiting for all thread to complete its process
threadPool.join();
}
private Runnable startProcess(final int taskID) {
return new Runnable() {
public void run() {
System.out.println("Task " + taskID + ": start");
ServerSocket server;
try {
server = new ServerSocket(8080);
while (true) {
final Socket connection = server.accept();
handle(connection);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Task " + taskID + ": end");
}
};
}
В принципе, это работает так, как должно, когда у меня есть только одна резьба, вставленная в threadpool. Однако, как только у меня есть два или более, возникает исключение связывания.
Что я хочу знать, каков правильный способ справиться с этим? Как серверы обычно это делают? Вы просто фиксируете исключение и продолжаете цикл, пока поток не завершит задачу? Есть ли способ заставить поток спать, пока он не сможет принять прием?
Как бы мне было 5 клиентов сделать запрос одновременно, и каков будет фактический рабочий процесс?
Got it. Необходимо только создать серверный сокет. Благодаря! – raaj