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

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

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

更新時間:2020-03-03 11:12:39 來源:動力節(jié)點 瀏覽2534次


  1,什么是線程?


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


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


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


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


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


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


  1,volatile


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


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


  2,synchronized


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


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


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


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


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


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


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


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


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


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


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


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


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


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


  8,什么是線程安全?Vector是一個線程安全類嗎?


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


  9,Java中如何停止一個線程?


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


  10,什么是ThreadLocal?


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


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


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


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


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本精品一区二区三区在线观看 | 91精品国产一区二区三区左线 | 特级黄色毛片视频 | 黄色毛片黄色毛片 | 免费看男女下面日出水视频 | 成人性动漫网站 | 一级毛片在线播放免费 | 一本色综合 | 国产欧美国产精品第二区 | 亚洲精品第一国产综合野 | 日韩在线视频不卡一区二区三区 | 99精品国产在这里白浆 | 交性大片欧美多人 | 天天干天天拍天天射 | 日韩在线观看一区二区三区 | 国产精品久久久久久久久免费观看 | 免费黄色三级 | 国产大臿蕉香蕉大视频女 | 国产在线高清不卡免费播放 | 天堂网在线资源 | 亚洲欧美在线免费 | 日韩视频欧美视频 | 狠狠色狠狠干 | 天天爽夜夜爽 | 国产一区二三区 | 美女黄影院 | 一级毛片特级毛片免费的 | 国产成人午夜性a一级毛片 国产成人午夜视频 | 欧美日韩中文在线视频 | 亚洲va精品中文字幕 | 成人免费在线视频网 | 亚洲免费黄色 | 成人在线视频免费看 | 99精品免费 | 久久亚洲国产的中文 | 伊人精品线视天天综合 | 国产黄色a三级三级三级 | 一区二区视频在线观看免费的 | 美女视频黄a视频全免费网站色窝 | 日韩精品专区 | 国产日韩欧美三级 |