对于一个大学项目,我开发了一个用Java编写的客户端-服务器应用程序,该应用程序允许多个连接。简而言之,连接是“无状态”(?),每个客户端都有一个标识特定用户并执行操作的令牌(每个操作都会打开连接,写入请求,等待响应并关闭连接)。] >
现在,我对同步有疑问,因为它有一个已知的问题:尝试在同一用户上同步操作,我正在使用一个ConcurrentHashMap
,其中包含tuple [UUID,Object],UUID对于使用相同令牌用户的每个客户端来说都是唯一的,而Object是我synchronize在磁盘上进行读写的方法的类。问题是,当打开连接并且令牌有效时,我将元组添加到HashMap(如果不存在),并且当关闭连接时,我从HashMap中删除了元组。
如您所见,如果两个(或多个)客户端希望同时对同一用户执行操作,则存在这样一个风险,即一个人会在没有他的元组的情况下找到HashMap,但是老实说(从未这样做过)我不知道如何解决问题。
我希望我尽可能清楚,感谢您的提前帮助。
对于一个大学项目,我开发了一个用Java编写的客户端-服务器应用程序,该应用程序允许多个连接。简而言之,连接是“无状态”(?),每个客户端都有一个令牌,表示...
我已经尝试用此类解决这个问题: