我正在开发一个聊天应用程序。我有一个处理聊天消息的功能。每个聊天室都由唯一的简码标识。现在我希望当一个简码的消息正在处理时,同一简码的另一条消息应该等待,而其他简码的消息应该继续。
请考虑遵循代码的和平,它有什么问题,因为相同短代码的消息正在并行处理。我只是猜不出问题
private HashMap<String, Object> locks = new HashMap<String, Object>();
public void handleShortCode(String shortcode,String message,String from)
{
Object lock = null;
lock = locks.get(shortcode);
if (lock == null)
{
locks.put(shortcode, lock = new Object());
}
synchronized (lock)
{
System.out.println("Handling shortcode:" + shortcode);
// processing
System.out.println("Successfully handled shortcode:" + shortcode + " ......");
}
}