黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 經(jīng)典技術(shù):Java線程面試題

經(jīng)典技術(shù):Java線程面試題

更新時(shí)間:2020-03-03 11:12:39 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2535次


  1,什么是線程?


  線程是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位,它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。程序員可以通過它進(jìn)行多處理器編程,你可以使用多線程對(duì)運(yùn)算密集型任務(wù)提速。比如,如果一個(gè)線程完成一個(gè)任務(wù)要100毫秒,那么用十個(gè)線程完成改任務(wù)只需10毫秒。


  2,線程和進(jìn)程有什么區(qū)別?


  線程是進(jìn)程的子集,一個(gè)進(jìn)程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。不同的進(jìn)程使用不同的內(nèi)存空間,而所有的線程共享一片相同的內(nèi)存空間。每個(gè)線程都擁有單獨(dú)的棧內(nèi)存用來存儲(chǔ)本地?cái)?shù)據(jù)。


  3,如何在Java中實(shí)現(xiàn)線程?


  兩種方式:java.lang.Thread類的實(shí)例就是一個(gè)線程但是它需要調(diào)用java.lang.Runnable接口來執(zhí)行,由于線程類本身就是調(diào)用的Runnable接口所以你可以繼承java.lang.Thread類或者直接調(diào)用Runnable接口來重寫run()方法實(shí)現(xiàn)線程。


  4,Java關(guān)鍵字volatile與synchronized作用與區(qū)別?


  1,volatile


  它所修飾的變量不保留拷貝,直接訪問主內(nèi)存中的。


  在Java內(nèi)存模型中,有mainmemory,每個(gè)線程也有自己的memory(例如寄存器)。為了性能,一個(gè)線程會(huì)在自己的memory中保持要訪問的變量的副本。這樣就會(huì)出現(xiàn)同一個(gè)變量在某個(gè)瞬間,在一個(gè)線程的memory中的值可能與另外一個(gè)線程memory中的值,或者mainmemory中的值不一致的情況。一個(gè)變量聲明為volatile,就意味著這個(gè)變量是隨時(shí)會(huì)被其他線程修改的,因此不能將它c(diǎn)ache在線程memory中。


  2,synchronized


  當(dāng)它用來修飾一個(gè)方法或者一個(gè)代碼塊的時(shí)候,能夠保證在同一時(shí)刻最多只有一個(gè)線程執(zhí)行該段代碼。


  一、當(dāng)兩個(gè)并發(fā)線程訪問同一個(gè)對(duì)象object中的這個(gè)synchronized(this)同步代碼塊時(shí),一個(gè)時(shí)間內(nèi)只能有一個(gè)線程得到執(zhí)行。另一個(gè)線程必須等待當(dāng)前線程執(zhí)行完這個(gè)代碼塊以后才能執(zhí)行該代碼塊。


  二、然而,當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),另一個(gè)線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。


  三、尤其關(guān)鍵的是,當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),其他線程對(duì)object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞。


  四、當(dāng)一個(gè)線程訪問object的一個(gè)synchronized(this)同步代碼塊時(shí),它就獲得了這個(gè)object的對(duì)象鎖。結(jié)果,其它線程對(duì)該object對(duì)象所有同步代碼部分的訪問都被暫時(shí)阻塞。


  五、以上規(guī)則對(duì)其它對(duì)象鎖同樣適用.


  5,有哪些不同的線程生命周期?


  當(dāng)我們?cè)贘ava程序中新建一個(gè)線程時(shí),它的狀態(tài)是New。當(dāng)我們調(diào)用線程的start()方法時(shí),狀態(tài)被改變?yōu)镽unnable。線程調(diào)度器會(huì)為Runnable線程池中的線程分配CPU時(shí)間并且講它們的狀態(tài)改變?yōu)镽unning。其他的線程狀態(tài)還有Waiting,Blocked和Dead。


  6,你對(duì)線程優(yōu)先級(jí)的理解是什么?


  每一個(gè)線程都是有優(yōu)先級(jí)的,一般來說,高優(yōu)先級(jí)的線程在運(yùn)行時(shí)會(huì)具有優(yōu)先權(quán),但這依賴于線程調(diào)度的實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)是和操作系統(tǒng)相關(guān)的(OSdependent)。我們可以定義線程的優(yōu)先級(jí),但是這并不能保證高優(yōu)先級(jí)的線程會(huì)在低優(yōu)先級(jí)的線程前執(zhí)行。線程優(yōu)先級(jí)是一個(gè)int變量(從1-10),1代表最低優(yōu)先級(jí),10代表最高優(yōu)先級(jí)。


  7,什么是死鎖(Deadlock)?如何分析和避免死鎖?


  死鎖是指兩個(gè)以上的線程永遠(yuǎn)阻塞的情況,這種情況產(chǎn)生至少需要兩個(gè)以上的線程和兩個(gè)以上的資源。


  分析死鎖,我們需要查看Java應(yīng)用程序的線程轉(zhuǎn)儲(chǔ)。我們需要找出那些狀態(tài)為BLOCKED的線程和他們等待的資源。每個(gè)資源都有一個(gè)唯一的id,用這個(gè)id我們可以找出哪些線程已經(jīng)擁有了它的對(duì)象鎖。


  避免嵌套鎖,只在需要的地方使用鎖和避免無限期等待是避免死鎖的通常辦法。


  8,什么是線程安全?Vector是一個(gè)線程安全類嗎?


  如果你的代碼所在的進(jìn)程中有多個(gè)線程在同時(shí)運(yùn)行,而這些線程可能會(huì)同時(shí)運(yùn)行這段代碼。如果每次運(yùn)行結(jié)果和單線程運(yùn)行的結(jié)果是一樣的,而且其他的變量的值也和預(yù)期的是一樣的,就是線程安全的。一個(gè)線程安全的計(jì)數(shù)器類的同一個(gè)實(shí)例對(duì)象在被多個(gè)線程使用的情況下也不會(huì)出現(xiàn)計(jì)算失誤。很顯然你可以將集合類分成兩組,線程安全和非線程安全的。Vector是用同步方法來實(shí)現(xiàn)線程安全的,而和它相似的ArrayList不是線程安全的。


  9,Java中如何停止一個(gè)線程?


  Java提供了很豐富的API但沒有為停止線程提供API。JDK1.0本來有一些像stop(),suspend()和resume()的控制方法但是由于潛在的死鎖威脅因此在后續(xù)的JDK版本中他們被棄用了,之后JavaAPI的設(shè)計(jì)者就沒有提供一個(gè)兼容且線程安全的方法來停止一個(gè)線程。當(dāng)run()或者call()方法執(zhí)行完的時(shí)候線程會(huì)自動(dòng)結(jié)束,如果要手動(dòng)結(jié)束一個(gè)線程,你可以用volatile布爾變量來退出run()方法的循環(huán)或者是取消任務(wù)來中斷線程


  10,什么是ThreadLocal?


  ThreadLocal用于創(chuàng)建線程的本地變量,我們知道一個(gè)對(duì)象的所有線程會(huì)共享它的全局變量,所以這些變量不是線程安全的,我們可以使用同步技術(shù)。但是當(dāng)我們不想使用同步的時(shí)候,我們可以選擇ThreadLocal變量。


  每個(gè)線程都會(huì)擁有他們自己的Thread變量,它們可以使用get()\set()方法去獲取他們的默認(rèn)值或者在線程內(nèi)部改變他們的值。ThreadLocal實(shí)例通常是希望它們同線程狀態(tài)關(guān)聯(lián)起來是privatestatic屬性。


經(jīng)典技術(shù):Java線程面試題


      以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“經(jīng)典技術(shù):Java線程面試題”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天狠天天操 | 成人激情文学 | 国产毛片在线看 | 日韩一级在线视频 | 久久精品国产日本波多麻结衣 | 亚洲sss| 在线精品国产导航 | 欧美一区二区三区男人的天堂 | 欧美中文综合在线视频 | 天天操人人爱 | 欧美三级大片在线观看 | 欧美在线影院 | 一一本大道香蕉大 | 手机在线观看黄色网址 | 国产亚洲一区二区三区在线 | 国产高清狼人香蕉在线观看 | 天天干天天做天天射 | 国产精品青青青高清在线 | 欧美成a高清在线观看www | 99视频精品全部国产盗摄视频 | 精品国产一区二区三区成人 | 国产精品久久久久久久人热 | 亚洲无线一二三四区 | 精品国模一区二区三区 | 九九热香蕉视频 | 亚洲综合久久久久久888 | 亚洲第一网站免费视频 | 国产精品久久国产精麻豆99网站 | 国产视频网 | 国产欧美网站 | 亚洲一级在线 | 青青青视频免费一区二区 | 久久首页| 精品欧美一区手机在线观看 | 婷婷夜夜躁天天躁人人躁 | 日本三级带日本三级带黄国产 | 欧类av怡春院 | 黄色网毛片 | 天天爱天天做天天爽夜夜揉 | 香蕉视频在线观 | 成人黄色免费 |