jmx是否为每次调用创建一个新线程?

时间:2015-03-13 10:56:54

标签: java jmx volatile

我有一个非易失性字段的类,以及get方法中的mBean。

class Foo {
   int x;
   int get() {  return x; }
}

我可以确定mBean将获得变量的最新值吗? 更一般地说,jmx如何调用方法,它是否在每次调用时创建一个新线程? (在这种情况下,我们确保获得最新值)

1 个答案:

答案 0 :(得分:0)

是的,您将获得最新值,具体取决于以同步方式读取/写入x。如果它是基本类型,请考虑使用AtomicInteger(或AtomicDouble等)来避免自己编写同步构造。

JMX是否为每次调用创建新线程可以通过在get()方法中添加以下行来找到:

System.out.println("get() executed by thread: " + Thread.currentThread().getName());

这将打印线程名称,如果每次调用都有变化,则表示使用了不同的线程。