2015-03-13 106 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());

這將打印線程的名字,如果它在每次調用不同,那表示使用不同的線程。

相關問題