直接来自documentation:
在多线程应用程序中,可能会发生属性更改 同时。 servlet容器没有要求 同步生成的通知;听众类 他们自己负责维护这样的数据完整性 情况。
据我所知,所有或大多数应用程序都是多线程的,因为Web服务器为每个客户端的请求创建一个新线程。该段只是说如果有一些共享可写资源,我们需要同步吗?
提前致谢。
答案 0 :(得分:0)
取决于属性更改的频率以及可写资源是否具有不期望的状态。
如果两个通知几乎同时到达监听器,则synchronized不保证监听器处理通知的顺序(参见this answer)。这可能导致可写资源达到不希望的状态(例如,在添加之前处理删除)。在这种情况下,您将需要类似fair lock的东西,这需要付出代价:监听器将在给定时间内处理较少的通知。如果这是一个问题,您可以尝试使可写资源本身是线程安全的,例如使用ConcurrentHashMap。