2014-11-12 5 views
1

В настоящее время я кодирую приложение JAVA на клиент-сервер, и я как бы застрял. Я искал в сети, чтобы найти полезный код. Я нашел этот образец (я хочу использовать его, когда я жду подключения), но я действительно не понимаю, что этот код должен делать, может ли кто-то там помочь? :)Java Client Server, многопоточность

Executor threadpool = Executors.newScheduledThreadPool(maxClients); 
+0

Чтобы ждать клиентских запросов, чтобы открыть соединение, вам нужен один поток, который в цикле вызывает serverockect.accept(). Вам не нужно использовать threadpool. Чтобы ждать сообщения от клиента после открытия соединения, вы можете использовать пул потоков, но он более сложный, чем использование отдельного потока на клиента, а когда maxClients превзойден, дополнительные клиентские соединения будут приняты, но не будут обработаны. Поэтому не используйте пул потоков в прототипной версии вашего сервера. –

+0

ваш ответ здесь http://stackoverflow.com/questions/12588476/multithreading-socket-communication-client-server –

ответ

0

Executor Интерфейс и Executors Factory поможет вам использовать ThreadPools.

В вашем случае: вы хотите обрабатывать входящее соединение клиента одновременно. Таким образом, вам нужен поток для каждого. Таким образом, подав задачу к Исполнителю является удобный способ не возиться с созданием резьбы и т.д.

Так линия

Executor threadpool = Executors.newScheduledThreadPool(maxClients); 

объявляет threadpool быть Палач (что задачи могут быть представлены позднее) но вам все равно, какая из реализаций. Правая сторона «=» затем использует Factory для извлечения экземпляра одной из реализаций Executor. В этом случае это ScheduledThreadPool с не менее maxClients Темы, ожидающие новых задач.

В коде это, вероятно, используется как

threadpool.execute(new ClientHandler(socket)); 

где ClientHandler некоторая реализации Runnable вспомогательный класс, который обрабатывает ввод-вывод с Клиентом.