2015-03-13 114 views
1

我有一个非易失性字段的类,并在get方法中有一个mBean。jmx是否为每个调用创建一个新线程?

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

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

回答

0

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

无论JMX会为每个调用一个新的线程可以通过在get()方法添加以下行简单地发现:

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

这将打印线程的名字,如果它在每次调用不同,那表示使用不同的线程。

相关问题