在Java面試中,99%以上會(huì)遇到與多線程相關(guān)的問(wèn)題,大多數(shù)待遇豐厚的Java開(kāi)發(fā)職位對(duì)于程序員的要求更是要精通多線程技術(shù)。
今天,小編分享了騰訊等大公司??嫉腏ava多線程面試題。
進(jìn)程,線程,協(xié)程之間的區(qū)別是什么(這個(gè)問(wèn)題考的是基礎(chǔ)概念,這個(gè)一定不要失誤)
回答:
簡(jiǎn)單來(lái)說(shuō),進(jìn)程是程序運(yùn)行和資源分配的基本單位,一個(gè)程序至少有一個(gè)進(jìn)程,而一個(gè)進(jìn)程至少有一個(gè)線程。進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存資源,這樣可以減少切換次數(shù),從而效率更高。
線程是進(jìn)程的一個(gè)實(shí)體,是cpu調(diào)度和分派的基本單位,是比程序更小的能獨(dú)立運(yùn)行的基本單位。同一進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行。
守護(hù)線程和非守護(hù)線程有怎么區(qū)別
回答:
程序運(yùn)行完畢,jvm會(huì)等待非守護(hù)線程完成后關(guān)閉,但是jvm不會(huì)等待守護(hù)線程。守護(hù)線程最典型的例子就是GC線程。
多線程上下文切換是什么?
回答:
多線程上下文切換就是指CPU控制權(quán)由一個(gè)已經(jīng)正在運(yùn)行的線程切換到另外一個(gè)就緒并等待獲取CPU執(zhí)行權(quán)的線程的過(guò)程。
有哪兩種創(chuàng)建線程的方式?
回答:
兩種方式:通過(guò)實(shí)現(xiàn)java.lang.Runnable或者通過(guò)擴(kuò)展java.lang.Thread類。
這里要注意,面試官還可能問(wèn)你這兩種方式更優(yōu)的是哪個(gè)?可以這樣答:
實(shí)現(xiàn)Runnable接口可能更優(yōu),原因:a、Java不支持多繼承,因此擴(kuò)展Thread類就代表這個(gè)子類不能擴(kuò)展其他類。而實(shí)現(xiàn)Runnable接口的類還可能擴(kuò)展另一個(gè)類;b、類可能只要求可執(zhí)行即可,因此繼承整個(gè)Thread類的開(kāi)銷過(guò)大。
怎么檢測(cè)一個(gè)線程是否持有對(duì)象監(jiān)視器
Java的Thread類提供了一個(gè)holdsLock(Object obj) 方法,只有當(dāng)對(duì)象obj的監(jiān)視器被某線程持有時(shí)才會(huì)返回true。
產(chǎn)生死鎖的條件有哪些?
回答:
互斥條件:一個(gè)資源只能夠被一個(gè)進(jìn)程使用。
請(qǐng)求與保持條件:請(qǐng)求資源是如果一個(gè)進(jìn)程阻塞,則對(duì)已獲得的資源保持不放。
不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。
循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。
一個(gè)線程如果出現(xiàn)了運(yùn)行時(shí)異常怎么辦?
回答:
如果該異常沒(méi)有被捕獲的話,這個(gè)線程就停止執(zhí)行了。但是要注意:如果這個(gè)線程持有某個(gè)對(duì)象的監(jiān)視器,則這個(gè)對(duì)象監(jiān)視器會(huì)被立即釋放。
Java使用的線程調(diào)度算法是?
回答:
應(yīng)用了搶占式,Java中一個(gè)線程用完CPU之后,操作系統(tǒng)會(huì)立馬根據(jù)線程優(yōu)先級(jí)、線程的饑餓情況等數(shù)據(jù)算出一個(gè)總的優(yōu)先級(jí)并分配下一個(gè)時(shí)間片給某個(gè)線程執(zhí)行。
以上就是長(zhǎng)沙中公優(yōu)就業(yè)Java培訓(xùn)機(jī)構(gòu)小編介紹的“騰訊Java多線程技術(shù)面試總結(jié)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)推薦
最新最全java面試題及答案(初級(jí)到高級(jí))
史上最全的中高級(jí)JAVA工程師面試題及答案匯總
Java高級(jí)開(kāi)發(fā)工程師面試題
2019史上最全java面試題題庫(kù)大全800題
哪有資深java工程師面試題