多核允許多個請求並行服務。 每個請求都想訪問Singleton對象中的方法m()(非同步方法)。即使我們有多個內核來處理請求,Singleton對象是否會導致性能下降?
由於我們有單個實例,並非所有在不同內核上執行的線程都可以同時訪問m()方法。
比方說,我們有兩個線程T1和T2在不同的內核上並行執行。 而線程T1當前正在執行m()方法。在另一個內核上執行的線程T2必須等到上下文切換或線程T1完成執行m(),然後線程T2纔會執行m()方法。
由於這個原因,雖然服務請求的線程可以並行執行,但它必須等到線程上下文切換髮生或另一個線程在方法m()上執行完畢。
那麼,單身物體不會影響性能嗎?