jmx 是否为每次调用创建一个新线程?
Does jmx create a new thread for each invocation?
我有一个带有非易失性字段的 class,在 get 方法中有一个 mBean。
class Foo {
int x;
int get() { return x; }
}
我能确定mBean 会得到变量的最新值吗?
更一般地说,jmx 如何调用方法,它是否在每次调用时创建一个新线程? (这样的话,保证我们得到的是最新的值)
是的,您将获得最新值,具体取决于 x
以同步方式 read/written。如果它是原始类型,请考虑使用 AtomicInteger
(或 AtomicDouble
等)以避免自己编写同步构造。
JMX 是否为每次调用创建一个新线程可以通过在您的 get()
方法中添加以下行来简单地发现:
System.out.println("get() executed by thread: " + Thread.currentThread().getName());
这将打印线程名称,如果它在每次调用中都不同,则意味着使用了不同的线程。
我有一个带有非易失性字段的 class,在 get 方法中有一个 mBean。
class Foo {
int x;
int get() { return x; }
}
我能确定mBean 会得到变量的最新值吗? 更一般地说,jmx 如何调用方法,它是否在每次调用时创建一个新线程? (这样的话,保证我们得到的是最新的值)
是的,您将获得最新值,具体取决于 x
以同步方式 read/written。如果它是原始类型,请考虑使用 AtomicInteger
(或 AtomicDouble
等)以避免自己编写同步构造。
JMX 是否为每次调用创建一个新线程可以通过在您的 get()
方法中添加以下行来简单地发现:
System.out.println("get() executed by thread: " + Thread.currentThread().getName());
这将打印线程名称,如果它在每次调用中都不同,则意味着使用了不同的线程。