У меня есть сервер, который получает различные xml-сообщения от клиентов (по одному потоку на каждого клиента) и направляет сообщения различным функциям в зависимости от типа сообщения.Например.если первый элемент в сообщениях содержит строку 'login', это означает, что это сообщение для входа в систему, поэтому перенаправьте сообщение в функцию login ().
В любом случае, я хочу, чтобы это сообщение было такимЭто может испортить ситуацию, если подключено несколько клиентов, и диспетчер переключает потоки в середине маршрутизации сообщений.Так вот, как я маршрутизирую сообщения -
public void processMessagesFromClient(Client client)
{
Document message;
while (true)
{
try
{
message = client.inputStream.readObject();
/*
* Determine the message type
*/
String messageType = getMessageType(message);
// Route the message depending on its type
switch (messageType)
{
case LOGIN:
userModel.handleLogin();
...
...
...
etc...
}
} catch(Exception e) {}
}
Так как я могу сделать этот поток безопасным?Я полагаю, мне нужно поместить оператор синхронизации где-то, но я не уверен, где.Также я читал эту тему и нашел этот пост, в котором говорится, что есть проблема с использованием синхронизации на 'this' - https://stackoverflow.com/a/416198/1088617
И еще один пост, в котором говорится, что синглтоны не подходят для использования синхронизации(Мой класс в приведенном выше коде - синглтон) - https://stackoverflow.com/a/416202/1088617