关于 servlet 中的事件侦听器



直接来自本文档:

在多线程应用程序中,可能会发生属性更改 同时。对 servlet 容器没有要求 同步生成的通知;侦听器类 他们自己负责维护数据完整性 情况。

据我所知,所有或大多数应用程序都是多线程的,因为 Web 服务器为每个客户端的请求创建一个新线程。该段落只是说,如果有一些共享的可写资源,我们需要同步,对吗?

提前谢谢。

取决于属性更改的频率以及可写资源是否可能具有不需要的状态。
如果两个通知几乎同时到达侦听器,则 sync 不保证侦听器处理通知的顺序(请参阅此答案)。这可能会导致可写资源达到不希望的状态(例如,在添加之前处理删除)。在这种情况下,您将需要像公平锁这样的东西,这是有代价的:侦听器将在给定时间内处理更少的通知。如果这是一个问题,您可以尝试使可写资源本身是线程安全的,例如使用 ConcurrentHashMap。

最新更新