1
我有一個非易失性字段的類,並在get方法中有一個mBean。jmx是否爲每個調用創建一個新線程?
class Foo {
int x;
int get() { return x; }
}
我可以確定mBean會得到最新的變量值嗎? 更一般地說,jmx如何調用方法,它是否在每次調用時創建一個新的線程? (在這種情況下,確保獲得最新值)
我有一個非易失性字段的類,並在get方法中有一個mBean。jmx是否爲每個調用創建一個新線程?
class Foo {
int x;
int get() { return x; }
}
我可以確定mBean會得到最新的變量值嗎? 更一般地說,jmx如何調用方法,它是否在每次調用時創建一個新的線程? (在這種情況下,確保獲得最新值)
是的,您將獲得最新值,取決於以同步方式讀取/寫入的x
。如果它是原始類型,請考慮使用AtomicInteger
(或AtomicDouble
等)以避免自己編寫同步的結構。
無論JMX會爲每個調用一個新的線程可以通過在get()
方法添加以下行簡單地發現:
System.out.println("get() executed by thread: " + Thread.currentThread().getName());
這將打印線程的名字,如果它在每次調用不同,那表示使用不同的線程。