Java程序員面試寶典之系統篇典型例題

系統相關典型例題

Java程序員面試寶典之系統篇典型例題

1 、假設就緒隊列中有10個線程,系統將時間片設置為200ms,CPU進行線程切換要花費10ms。則系統開銷所佔的比例約為()

A、 0.01

B、 0.05

C、 0.1

D、 0.2

解答:

很多人這麼理解:

Java程序員面試寶典之系統篇典型例題

其實實際上應該是:

Java程序員面試寶典之系統篇典型例題

就是說:操作系統調度耗時本身要算到時鐘的時間片裡的

操作系統的調度邏輯是:發生中斷->處理調度->發生中斷->處理調度...

一個時間片長度就是兩次中斷的時間長度。

所以操作系統開銷可以大概理解為:

調度耗時/時間片長度: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


分享到:


相關文章: