gpt4 book ai didi

JavaEE : Is is it wise to make my context attribute thread-safe in this scenario?

转载 作者:行者123 更新时间:2023-12-02 08:18:26 25 4
gpt4 key购买 nike

我正在 Servlet 3.0 API 的帮助下为我的网站实现一个动态通知系统(类似于 Facebook)。我计划支持此功能的结构是:

  1. 在每次页面加载时,发送 XMLHTTP“get”向服务器请求
  2. 允许服务器创建 AsyncContext 对象从这些“获取”请求并存储它们位于应用程序范围的映射中由用户的网站 ID 键入
  3. 每当用户执行某项操作时产生通知,查询应用程序范围的 ID 映射用户的 friend ,并使用AsyncContext对象存储在那里,发送给每个 friend 的通知。
  4. 每个 friend 都会收到通知。

我的问题是:是否有必要使这个 map 线程安全?在最坏的情况下,代表“通知发送用户”的函数会将通知发送到 map 中的陈旧异步上下文,因为它对应的用户当前正在切换页面并且尚未切换发送新的 XMLHTTP 请求,或已注销。

但是,在每个页面加载时,我还有代码来检索数据库中比“上次检查日期”更新的所有通知,因此在页面加载时,通知用户不依赖于动态通知系统。因此,如果用户切换页面,他仍然会收到通知(显然,如果用户注销,通知的概念就不相关)。

根据这些信息,是否存在需要映射线程安全的场景?

最佳答案

您可能不需要精确的一致性..但您仍然不希望任何线程在写入时读取正常的 HashMap (添加可能会导致重新哈希并使获取线程陷入无限循环)。

此外,该计划无法很好地扩展到超过 1 个服务器。如果可以的话...只需使用 ConcurrentHashMap 即可。

关于JavaEE : Is is it wise to make my context attribute thread-safe in this scenario?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com