我有一个非易失性字段的类,以及get方法中的mBean。
class Foo {
int x;
int get() { return x; }
}
我可以确定mBean将获得变量的最新值吗? 更一般地说,jmx如何调用方法,它是否在每次调用时创建一个新线程? (在这种情况下,我们确保获得最新值)
答案 0 :(得分:0)
是的,您将获得最新值,具体取决于以同步方式读取/写入x
。如果它是基本类型,请考虑使用AtomicInteger
(或AtomicDouble
等)来避免自己编写同步构造。
JMX是否为每次调用创建新线程可以通过在get()
方法中添加以下行来找到:
System.out.println("get() executed by thread: " + Thread.currentThread().getName());
这将打印线程名称,如果每次调用都有变化,则表示使用了不同的线程。