面試Java開發師常問到的5個問題

Java開發師在面試的時候總會遇到各種各樣的問題,雖然都不怎麼難,但是因爲太突然而手足無措的情況時有發生。爲了幫助大家能夠避免在這個地方踩坑,小編特意整理了企業在面試Java開發師時經常會提到的5個問題,快來看看吧

在使用多線程時,上下文切換指的是什麼?

上下文切換是存儲和恢復CPU狀態的過程,它可以讓線程執行可以在中斷點的位置繼續恢復執行。上下文切換非基本特徵是多任務操作系統和多線程環境。

多線程編程的優勢在哪?

在開發多線程的程序中,提高程序效率的方式就是多線程執行併發,CPU不會因爲某個線程需要等待資源而進入空閒狀態。多個線程共享堆內存(heap memory),因此創建多個線程去執行一些任務會比創建多個進程更好。舉個例子,Servlets比CGI更好,是因爲Servlets支持多線程而CGI不支持。

爲什麼Thread類的sleep()和yield()方法是靜態的?

Thread類的sleep()和yield()方法將在當前正在執行的線程上運行。處於等待狀態的線程被調用這種行爲是毫無意義的。避免程序員錯誤的認爲可以在其他非運行線程調用這些方法的最好方式就是在當前正在執行的線程中工作。

什麼是Java線程轉儲,如何得到它?

線程轉儲是一個JVM活動線程的列表,它對於分析系統瓶頸和死鎖非常有用。有很多方法可以獲取線程轉儲——使用Profiler,Kill -3命令,jstack工具等等。我更喜歡jstack工具,因爲它容易使用並且是JDK自帶的。由於它是一個基於終端的工具,所以我們可以編寫一些腳本去定時的產生線程轉儲以待分析。

volatile在Java中有什麼作用?

當volatile修飾變量時,全部的線程都會直接進行讀取該變量並且不會觸發緩存行爲。這就確保了線程讀取到的變量是同內存中是一致的。

是不是很實用呢?希望對大家有幫助哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章