Потоки в Яве - PullRequest
       34

Потоки в Яве

0 голосов
/ 16 апреля 2009

Хорошо, я разрабатываю односерверную многопользовательскую программу на Java. Моя проблема в том, могу ли я использовать единый поток для всех клиентов или мне нужно создать отдельный поток для каждого клиента?

помогите пожалуйста спасибо

Ответы [ 3 ]

2 голосов
/ 16 апреля 2009

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

Обычно легко получить поток для каждого клиента без дополнительной работы, потому что каждый клиент все равно будет подключаться к серверу, и через это соединение можно легко настроить поток.

1 голос
/ 16 апреля 2009

Вы можете сделать это? Да, как сказал Джон Скит, вы можете использовать многоадресную рассылку.

Стоит ли это делать? Это зависит от того, для чего вы используете потоки.

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

1 голос
/ 16 апреля 2009

Да, вы можете, но я думаю, что это будет сложнее.

Если вы используете java.net.ServerSocket , то каждый клиент принимает:

Socket client = server.accept();

Будет иметь свой собственный поток, так что вам больше ничего не нужно делать.

Есть ли реальная потребность в едином потоке для всех клиентов или это просто то, что, по вашему мнению, могло бы помочь.

В последующем это может вызвать больше проблем, чем решить.

...