【发布时间】:2012-04-27 21:32:32
【问题描述】:
我一直在我们的 Spring Web 应用程序中公开 bean,以防我们需要即时进行配置更改。最近我一直在审查并发性,我开始想知道当您通过 JMX 对其中一个 bean 进行变异时,其他线程中会发生什么?
JMX 是否有某种方式强制刷新内存模型,因此您不必担心使字段易失/同步以确保其他线程看到更改?
当 Tomcat 创建一个新线程来处理请求时,即使该字段不是线程安全的,该线程也会看到更改,对吗?因此,除非我需要更改立即在当前请求线程中生效,否则有什么理由担心并发问题?
【问题讨论】:
-
Arlo,你能举一个例子,你是如何使用 JMX 改变你的 bean 的吗?
-
@Rob - 用于构建 URL 或布尔值以禁用功能的字符串字段。我猜测当 Tomcat 产生一个新线程来处理请求时,创建线程的行为会在内存中获取最新值(即使该字段不是易失性的),但我只是想确定一下。就我而言,我并不担心当前的活动线程会立即看到突变,但我很好奇。根据 Gray 的说法,JMX 在并发方面没有做任何特别的事情。
标签: java tomcat concurrency jmx mbeans