Я изучаю книгу о java сокетах, глава, которую я только что прочитал, касается нескольких соединений, то есть сервера, который подключен к нескольким клиентам одновременно через потоки. Объясните два подхода к созданию этих соединений: 1) создайте новый поток для каждого клиента. 2) использовать конечное число N потоков для одновременной обработки запросов N клиентов и ставить в очередь остальные. Затем он представил интерфейс Executor, который из того, что я понимаю, является лучшим подходом, поскольку он повторно использует потоки, которые мы уже использовали, но которые мы больше не используем (возможно, я неправильно понял, так как я читаю его в Engli sh и я не понимаю это хорошо). Итак, я сделал пример в java:
public class Server{
public static void main(String[] args){
ServerSocket ServSock=new ServerSocket(6666);
Executor service=Executors.newCachedThreadPool();
while(true){
Socket ClntSock=ServSock.accept();
service.execute(new EchoProtocol(ClntSock));
}
}
}
EchoProtocol. java - это класс, расширяющий Thread, клиент отправляет строку на сервер, а сервер отправляет ее так же, как и клиент. Чтобы проверить, что он повторно использовал потоки, я помещаю это в конструктор:
System.out.println(getName());
Но каждый раз, когда я запускаю новый клиент, постоянно увеличивающийся индекс Thread-0 Thread-1 Thread-2 ... is напечатано, даже если я закончил некоторые клиенты. Так что не используйте темы? Что я не понимаю?