好程式設計師Java培訓分享Java多執行緒常見面試問題

好程式設計師發表於2020-09-07

   好程式設計師Java 培訓分享 Java 多執行緒常見 面試 問題, 本篇文章 好程式設計師 小編給想要參加Java 培訓或者是自學 Java 準備面試的小夥伴講解一下 Java 面試中多執行緒常見問題,希望可以幫助小夥伴順利高薪就業。

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

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

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

   UNIX 中你可以使用 kill-3 ,然後 threaddump 將會列印日誌,在 windows 中你可以使用” CTRL+Break ”。非常簡單和專業的執行緒面試問題,但是如果他問你怎樣分析它,就會很棘手。

   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 時間最長 ?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2717674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章