扣丁學堂簡述Java面試中多線程常見問題

本篇文章扣丁學堂小編給想要參加Java培訓或者是自學Java準備面試的小夥伴講解一下Java面試中多線程常見問題,希望可以幫助小夥伴順利高薪就業。  

444.png

​1、在Java中CycliBarriar和CountdownLatch有什麼區別?  

這個線程問題主要用來檢測你是否熟悉JDK5中的併發包。這兩個的區別是CyclicBarrier可以重複使用已經通過的障礙,而CountdownLatch不能重複使用。  

2、你將如何使用threaddump?你將如何分析Threaddump?  

在UNIX中你可以使用kill-3,然後threaddump將會打印日誌,在windows中你可以使用”CTRL+Break”。非常簡單和專業的線程面試問題,但是如果他問你怎樣分析它,就會很棘手。(Java技術交流羣:670348138我們一起學Java!)  

3、你在多線程環境中遇到的共同的問題是什麼?你是怎麼解決它的?  

多線程和併發程序中常遇到的有Memory-interface、競爭條件、死鎖、活鎖和飢餓。問題是沒有止境的,如果你弄錯了,將很難發現和調試。這是大多數基於面試的,而不是基於實際應用的Java線程問題。  

4、爲什麼我們調用start()方法時會執行run()方法,爲什麼我們不能直接調用run()方法?  

這是另一個非常經典的java多線程面試問題。這也是我剛開始寫線程程序時候的困惑。現在這個問題通常在電話面試或者是在初中級Java面試的第一輪被問到。這個問題的回答應該是這樣的,當你調用start()方法時你將創建新的線程,並且執行在run()方法裏的代碼。但是如果你直接調用run()方法,它不會創建新的線程也不會執行調用線程的代碼。  

5、什麼是不可變對象,它對寫併發應用有什麼幫助?  

另一個多線程經典面試問題,並不直接跟線程有關,但間接幫助很多。這個java面試問題可以變的非常棘手,如果他要求你寫一個不可變對象,或者問你爲什麼String是不可變的。  

6、Java中你怎樣喚醒一個阻塞的線程?  

這是個關於線程和阻塞的棘手的問題,它有很多解決方法。如果線程遇到了IO阻塞,我並且不認爲有一種方法可以中止線程。如果線程因爲調用wait()、sleep()、或者join()方法而導致的阻塞,你可以中斷線程,並且通過拋出InterruptedException來喚醒它。  

7、補充的其它幾個問題:  

1)在java中綠色線程和本地線程區別?  

2)線程與進程的區別?  

3)什麼是多線程中的上下文切換?  

4)死鎖與活鎖的區別,死鎖與餡餅的區別?  

5)Java中用到的線程調度算法是什麼?  

6)在Java中什麼是線程調度?  

7)在線程中你怎麼處理不可捕捉異常?  

8)什麼是線程組,爲什麼在Java中不推薦使用?  

9)爲什麼使用Executor框架比使用應用創建和管理線程好?  

10)在Java中Executor和Executors的區別?  

11)如何在Windows和Linux上查找哪個線程使用的CPU時間最長?  

關於Java面試中多線程常見問題解析就給大家介紹以上幾點,想要學習Java開發技術的小夥伴一定要選擇專業的Java培訓機構進行學習,扣丁學堂不僅有專業的老師和與時俱進的課程體系還有大量的Java視頻教程供學員觀看學習,想要學到實用技能的小夥伴快到扣丁學堂諮詢報名吧。扣丁學堂Java技術交流羣:850353792。

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