关于servlet中的事件监听器

时间:2014-02-24 17:32:07

标签: java servlets listener

直接来自documentation

  

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

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

取决于属性更改的频率以及可写资源是否具有不期望的状态。
如果两个通知几乎同时到达监听器,则synchronized不保证监听器处理通知的顺序(参见this answer)。这可能导致可写资源达到不希望的状态(例如,在添加之前处理删除)。在这种情况下,您将需要类似fair lock的东西,这需要付出代价:监听器将在给定时间内处理较少的通知。如果这是一个问题,您可以尝试使可写资源本身是线程安全的,例如使用ConcurrentHashMap