亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java程序員面試中的多線程問題

2019-11-14 20:51:13
字體:
來源:轉載
供稿:網友
java程序員面試中的多線程問題

很多核心Java面試題來源于多線程(Multi-Threading)和集合框架(Collections Framework),理解核心線程概念時,嫻熟的實際經驗是必需的。這篇文章收集了Java線程方面一些典型的問題,這些問題經常被高級工程師所問到。

0、Java中多線程同步是什么?

在多線程程序下,同步能控制對共享資源的訪問。如果沒有同步,當一個Java線程在修改一個共享變量時,另外一個線程正在使用或者更新同一個變量,這樣容易導致程序出現錯誤的結果。

1、解釋實現多線程的幾種方法?

一Java線程可以實現Runnable接口或者繼承Thread類來實現,當你打算多重繼承時,優先選擇實現Runnable。

2、Thread.start()與Thread.run()有什么區別?

Thread.start()方法(native)啟動線程,使之進入就緒狀態,當cpu分配時間該線程時,由JVM調度執行run()方法。

3、為什么需要run()和start()方法,我們可以只用run()方法來完成任務嗎?

我們需要run()&start()這兩個方法是因為JVM創建一個單獨的線程不同于普通方法的調用, 所以這項工作由線程的start方法來完成,start由本地方法實現,需要顯示地被調用,使用這倆個方法的另外一個好處是任何一個對象都可以作為線程運 行,只要實現了Runnable接口,這就避免因繼承了Thread類而造成的Java的多繼承問題。

4、什么是ThreadLocal類,怎么使用它?

ThreadLocal是一個線程級別的局部變量,并非“本地線程”。ThreadLocal為每個使用該變量的線程提供了一個獨立的變量副本,每個線程修改副本時不影響其它線程對象的副本(譯者注)。

下面是線程局部變量(ThreadLocal variables)的關鍵點:

一個線程局部變量(ThreadLocal variables)為每個線程方便地提供了一個單獨的變量。

ThreadLocal實例通常作為靜態的私有的(PRivate static)字段出現在一個類中,這個類用來關聯一個線程。

當多個線程訪問ThreadLocal實例時,每個線程維護ThreadLocal提供的獨立的變量副本。

常用的使用可在DAO模式中見到,當DAO類作為一個單例類時,數據庫鏈接(connection)被每一個線程獨立的維護,互不影響。(基于線程的單例)

5、什么時候拋出InvalidMonitorStateException異常,為什么?

調用wait()/notify()/notifyAll()中的任何一個方法時,如果當前線程沒有獲得該對象的鎖,那么就會拋出IllegalMonitorStateException的異常(也就是說程序在沒有執行對象的任何同步塊或者同步方法時,仍然嘗試 調用wait()/notify()/notifyAll()時)。由于該異常是RuntimeExcpetion的子類,所以該異常不一定要捕獲(盡管 你可以捕獲只要你愿意).作為RuntimeException,此類異常不會在wait(),notify(),notifyAll()的方法簽名提 及。

6、Sleep()、suspend()和wait()之間有什么區別?

Thread.sleep()使當前線程在指定的時間處于“非運行”(Not Runnable)狀態。線程一直持有對象的監視器。比如一個線程當前在一個同步塊或同步方法中,其它線程不能進入該塊或方法中。如果另一線程調用了 interrupt()方法,它將喚醒那個“睡眠的”線程。

注意:sleep()是一個靜態方法。這意味著只對當前線程有效,一個常見的錯誤是調用t.sleep(),(這里的t是一個不同于當前線程的線 程)。即便是執行t.sleep(),也是當前線程進入睡眠,而不是t線程。t.suspend()是過時的方法,使用suspend()導致線程進入停 滯狀態,該線程會一直持有對象的監視器,suspend()容易引起死鎖問題。

object.wait()使當前線程出于“不可運行”狀態,和sleep()不同的是wait是object的方法而不是thread。調用 object.wait()時,線程先要獲取這個對象的對象鎖,當前線程必須在鎖對象保持同步,把當前線程添加到等待隊列中,隨后另一線程可以同步同一個 對象鎖來調用object.notify(),這樣將喚醒原來等待中的線程,然后釋放該鎖?;旧蟱ait()/notify()與sleep() /interrupt()類似,只是前者需要獲取對象鎖。

7、在靜態方法上使用同步時會發生什么事?

同步靜態方法時會獲取該類的“Class”對象,所以當一個線程進入同步的靜態方法中時,線程監視器獲取類本身的對象鎖,其它線程不能進入這個類的任何靜態同步方法。它不像實例方法,因為多個線程可以同時訪問不同實例同步實例方法。

8、當一個同步方法已經執行,線程能夠調用對象上的非同步實例方法嗎?

可以,一個非同步方法總是可以被調用而不會有任何問題。實際上,Java沒有為非同步方法做任何檢查,鎖對象僅僅在同步方法或者同步代碼塊中檢查。如果一個方法沒有聲明為同步,即使你在使用共享數據Java照樣會調用,而不會做檢查是否安全,所以在這種情況下要特別小心。一個方法是否聲明為同步取決于臨界區訪問(critial section access),如果方法不訪問臨界區(共享資源或者數據結構)就沒必要聲明為同步的。

9、 在一個對象上兩個線程可以調用兩個不同的同步實例方法嗎?

不能,因為一個對象已經同步了實例方法,線程獲取了對象的對象鎖。所以只有執行完該方法釋放對象鎖后才能執行其它同步方法。

10、 什么是死鎖

死鎖就是兩個或兩個以上的線程被無限的阻塞,線程之間相互等待所需資源。這種情況可能發生在當兩個線程嘗試獲取其它資源的鎖,而每個線程又陷入無限等待其它資源鎖的釋放,除非一個用戶進程被終止。就JavaAPI而言,線程死鎖可能發生在一下情況。

●當兩個線程相互調用Thread.join()

●當兩個線程使用嵌套的同步塊,一個線程占用了另外一個線程必需的鎖,互相等待時被阻塞就有可能出現死鎖。

11、什么是線程餓死,什么是活鎖?

線程餓死和活鎖雖然不想是死鎖一樣的常見問題,但是對于并發編程的設計者來說就像一次邂逅一樣。

當所有線程阻塞,或者由于需要的資源無效而不能處理,不存在非阻塞線程使資源可用。JavaAPI中線程活鎖可能發生在以下情形:

●當所有線程在程序中執行Object.wait(0),參數為0的wait方法。程序將發生活鎖直到在相應的對象上有線程調用Object.notify()或者Object.notifyAll()。

●當所有線程卡在無限循環中。

這里的問題并不詳盡,我相信還有很多重要的問題并未提及,您認為還有哪些問題應該包括在上面呢?歡迎在評論中分享任何形式的問題與建議。

我是天王蓋地虎的分割線

參考:http://blog.jobbole.com/18571/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品mp4| 久久久久成人网| 精品久久久久久亚洲国产300| 国精产品一区一区三区有限在线| 亚洲一区二区三区乱码aⅴ| 欧美成人免费观看| 亚洲色无码播放| 清纯唯美日韩制服另类| 亚洲xxxx视频| 欧美日韩亚洲精品一区二区三区| 精品久久久久人成| 亚洲aaaaaa| 永久555www成人免费| 久久久精品视频在线观看| 欧美成人精品h版在线观看| 欧美日韩福利电影| 亚洲全黄一级网站| 91chinesevideo永久地址| 国产91色在线| 久久亚洲精品中文字幕冲田杏梨| www.亚洲男人天堂| 久久久久中文字幕| 91视频国产高清| 亚洲国产精品高清久久久| 国产999精品久久久影片官网| 亚洲www永久成人夜色| 国产精品亚洲美女av网站| 国产一区二区三区视频在线观看| 久久精品成人一区二区三区| 欧美日韩综合视频| 91精品国产自产在线| 中文日韩电影网站| 久久影视免费观看| 97精品国产97久久久久久免费| 成人两性免费视频| 亚洲视频一区二区| 亚洲国产精品成人一区二区| 国产成人亚洲综合91精品| 久久成人精品电影| 中文字幕亚洲精品| 久久艳片www.17c.com| 久久亚洲精品毛片| 性色av一区二区咪爱| 亚洲国产另类 国产精品国产免费| 日韩欧美国产激情| 国产欧美精品日韩| 91精品国产综合久久久久久蜜臀| 久久久久成人网| 91av视频在线免费观看| 亚洲精品自拍视频| 成人写真福利网| 亚洲一区美女视频在线观看免费| 国产欧美最新羞羞视频在线观看| 亚洲小视频在线| 国产精品久久久久久久av电影| 久久久女人电视剧免费播放下载| 欧美成人免费va影院高清| 日韩精品在线免费播放| 亚洲第一天堂无码专区| 欧美成人精品影院| 97视频在线观看视频免费视频| 亚洲国产一区自拍| 精品久久久香蕉免费精品视频| 国产精品91久久| 懂色av影视一区二区三区| 日韩天堂在线视频| 动漫精品一区二区| 全色精品综合影院| 在线观看欧美日韩| 欧美乱大交xxxxx| 大胆人体色综合| 国产噜噜噜噜久久久久久久久| 国产精品久久不能| 久久久久久久久网站| 日韩精品视频在线观看网址| 国产精品视频精品| 狠狠爱在线视频一区| 亚洲网站在线看| 成人激情视频在线| 国产成人精品免费视频| 欧美做受高潮1| 九九热精品视频| 欧美性xxxx极品高清hd直播| 亚洲国产91色在线| 亚洲第一区中文99精品| 国产精品欧美一区二区三区奶水| 欧美国产激情18| 亚洲成人网在线| 日韩美女在线看| 亚洲无线码在线一区观看| 亚洲精品自产拍| 欧美黄色三级网站| 黑人巨大精品欧美一区二区免费| 人人澡人人澡人人看欧美| 久久久久久国产三级电影| 91九色视频在线| 亚洲精品视频二区| 国产视频精品一区二区三区| 亚洲精品中文字幕有码专区| 亚洲综合国产精品| 欧美片一区二区三区| 欧美激情欧美激情在线五月| 欧美日本黄视频| 国产最新精品视频| 4k岛国日韩精品**专区| 不卡av在线网站| 国产aⅴ夜夜欢一区二区三区| 色与欲影视天天看综合网| 国产一级揄自揄精品视频| 欧美香蕉大胸在线视频观看| 97欧美精品一区二区三区| 亚洲成人a级网| 91亚洲精品久久久久久久久久久久| 国内揄拍国内精品| 国产97在线亚洲| 岛国精品视频在线播放| 午夜伦理精品一区| 伊人一区二区三区久久精品| 日韩精品中文字幕久久臀| 国产成人精品免费视频| 欧美日韩成人黄色| 国产精品激情av电影在线观看| 亚洲aⅴ日韩av电影在线观看| 国产亚洲欧美日韩一区二区| 亚洲影视九九影院在线观看| 日本免费久久高清视频| 亚洲一区二区三区乱码aⅴ| 国产精品v日韩精品| 亚洲a级在线观看| 欧美日韩一区二区在线| 午夜精品视频在线| 欧美日韩综合视频网址| 91精品国产乱码久久久久久蜜臀| 97婷婷涩涩精品一区| 秋霞成人午夜鲁丝一区二区三区| 国产在线视频不卡| 亚洲电影在线看| 精品无人区乱码1区2区3区在线| 国产精品国语对白| 欧美与黑人午夜性猛交久久久| 91精品久久久久久久久青青| 亚洲精品久久视频| 亚洲成人久久久久| 黑人狂躁日本妞一区二区三区| 91在线免费观看网站| 久久久久久久国产精品视频| 亚洲丁香久久久| 精品视频—区二区三区免费| 成人福利在线视频| 久久精品视频网站| 亚洲精品影视在线观看| 成人性生交大片免费看视频直播| 亚洲一区二区精品| 欧美精品一区在线播放| 日韩一区二区三区在线播放| 日韩电影免费在线观看中文字幕| 91tv亚洲精品香蕉国产一区7ujn| 欧美精品久久久久久久免费观看| 精品国产一区二区三区久久久| 久久成人精品视频| 黄色一区二区在线观看| 精品国产一区二区三区久久久| 色综合久综合久久综合久鬼88| 91夜夜未满十八勿入爽爽影院|