2010-12-10 54 views
1

我需要更改Sevlet上下文在runtime.it中的对象的值由我的应用程序保证只有单个线程会重置该值在ServletContext属性同时是否有任何方法来限制访问servlet上下文中的属性

问题:我的问题是当一个线程设置对象很多其他线程的值将被读取权限到该对象,他们都可以读出怪异值作为对象可能使用它时的一半设置

有什么办法可以限制所有线程的读取访问直到写入线程完成se创造新的价值。

回答

1

ServletContext.setAttribute()总是需要同步

把ServletContext.setAttribute()的同步块。

这样一次只有一个线程会广告价值。

+0

这里的问题不是两个线程可能尝试设置属性。如果它确定只有一个线程将设置此属性。但是当1个线程正在设置此属性时,其他几个线程可能具有对此属性的读取访问权限。我想限制这些线程读取,直到写入线程完成时写入 – dpsdce 2010-12-10 05:58:41