Где найти пример реализации асинхронного многопоточного сервера на Java?
Ситуация такая. При подключении клиента через ServerSocket accept() создается новый поток. Сначала идет проверка версии клиента (клиент при подключении шлет свою версию) и если версия совпадает, то : текущий поток блокируется для приема сообщений (readLong, например). Специфика такова, что клиенту может быть отправлено сообщение сервером, притом, асинхронно (например, другой клиент совершил некое действие, о котором должны быть информированы несколько других клиентов).
С Java работаю достаточно недавно, поэтому есть вопрос, как заблокировать поток записи, на ожидание сообщения, например event-driven.. т.е. понятно, что в C я бы воспользовался mutex-ом или условной блокировкой. Когда сообщение для потока приходит - вызывается процедура, которая инициирует разблокировку пишущего потока... вообщем как-то так ;-)
Вот бы пример какой простой посмотреть, например, чата на вроде IRC-сервера.
Говорят, вроде как копать в сторону NIO....
p.s. я так понимаю, что пишущий поток можно блокировать через this.wait(), потом вызывать например так:
[code]
synchronized(this) {
OutThread thr=outThreads.get(connid).notify();
thr.sendPacket(myBytesArray);
}
[/code]
Где, OutThreads есть ArrayList, connid - идентификатор соединения, myBytesArray - byte byBytesArray[]...
Но, как-то по моему - кривовато
Другие вопросы по: компьютеры и интернет
Знаешь правильный ответ?
Где найти пример реализации асинхронного многопоточного сервера на Java?...
Популярные вопросы