java什么時候會用到守護線程?

時間:2017-11-23 15:07:00

    如果進程不必等到某個線程結束才能終止,那么這個線程就可以設置成守護線程。這省掉了正常關閉線程的那些麻煩事,可以立即將線程結束掉。換個角度來說,如果一個正在執行某個操作的線程必須要正確地關閉掉否則就會出現不好的后果的話,那么這個線程就應該是用戶線程。通常都是些關鍵的事務,比方說,數據庫錄入或者更新,這些操作都是不能中斷的。

1,處理器親和性(Processor Affinity),
    這里要講的會更靠近硬件,也就是說,當軟件遇上了硬件。處理器親和性使得你能夠將線程或者進程綁定到特定的CPU核上。這意味著只要是某個特定的線程,它就肯定只會在某個特定的CPU核上執行。通常來講如何綁定是由操作系統的線程調度器根據它自己的邏輯來決定的,它很可能會將我們前面提到的線程優先級也一并考慮進來。


    這么做的好處在于CPU緩存。如果某個線程只會在某個核上運行,那么它的數據恰好在緩存里的概率就大大提高了。如果數據正好就在CPU緩存里,那么就沒有必要重新再從內存里加載了。你所節省的這幾毫秒時間就能用在刀刃上,在這段時間里代碼可以馬上開始執行,也就能更好地利用所分配給它的CPU時間。當然了,操作系統層面可能會存在某種優化,硬件架構當然也是個很重要的因素,但利用了處理器的親和性至少能夠減小線程切換CPU的機率。


    由于這里摻雜著多種因素,處理器親和性到底對吞吐量有多大的影響,最好還是通過測試的方式來進行證明。也許這個方法并不是總能顯著地提升性能,但至少有一個好處就是吞吐量會相對穩定。親和策略可以細化到非常細的粒度上,這取決于你具體想要什么。高頻交易行業便是這一策略最能大顯身手的場景之一。

? 江苏快3号码表