我需要在运行时更改Sevlet上下文中对象的值。我的应用程序保证一次只有一个线程会在Servletcontext中重置该属性的值
问题:我的问题是当单线程设置对象的值时,许多其他线程将具有对此对象的读访问权,并且它们都可以读取奇怪的值,因为对象可能是半集在使用它时
有什么办法可以限制所有线程的读取访问权限,直到写入线程完成设置新值。
答案 0 :(得分:1)
ServletContext.setAttribute()始终需要同步
将ServletContext.setAttribute()放在Synchronization块中。
这样一次只有一个广告的广告价值。
答案 1 :(得分:1)
将ConcurrentHashMap
作为servletcontext属性并将所需对象作为映射条目进行管理。