系統相關典型例題
1 、假設就緒隊列中有10個線程,系統將時間片設置為200ms,CPU進行線程切換要花費10ms。則系統開銷所佔的比例約為()
A、 0.01
B、 0.05
C、 0.1
D、 0.2
解答:
很多人這麼理解:
其實實際上應該是:
就是說:操作系統調度耗時本身要算到時鐘的時間片裡的
操作系統的調度邏輯是:發生中斷->處理調度->發生中斷->處理調度...
一個時間片長度就是兩次中斷的時間長度。
所以操作系統開銷可以大概理解為:
調度耗時/時間片長度:10/200 = 0.05
2 GC線程是否為守護線程?
解析:
線程分為User Thread(用戶線程)、Daemon Thread(守護線程)。
用戶線程:非守護線程包括常規的用戶線程或諸如用於處理GUI事件的事件調度線程,Java虛擬機在它所有非守護線程已經離開後自動離開。
守護線程:守護線程則是用來服務用戶線程的,比如說GC線程。如果沒有其他用戶線程在運行,那麼就沒有可服務對象,也就沒有理由繼續下去。
只要當前JVM實例中尚有任何一個非守護線程沒有結束,守護線程就全部工作。
只有當最後一個非守護線程結束時,守護線程隨著JVM一同結束工作。
GC(垃圾回收)是守護線程最典型的引用。
Java中守護線程和非守護線程:
http://blog.csdn.net/wjh5240313226/article/details/51501941
閱讀更多 明明如月學長 的文章