国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java多線程面試基礎

2019-11-08 00:43:51
字體:
來源:轉載
供稿:網友

LZ這幾天看到一些java初級工程師就像我們應屆畢業生在去面試的時候都會或多或少問到多線程的概念,確實,這部分的內容對一個搞開發的十分的重要,掌握了就是你的優勢。LZ將部分重點內容總結一下,以便和大家共享以及方便自己以后查看。

進程、線程以及它們的關系

如下圖所示,進程是一個獨立的運行環境,可以被稱作一個程序或者一個應用,而線程就是在進程中的一個任務,即一個執行路勁,像我們平時打開電腦的任務管理器,里面看到的都是正在運行的進程,QQ是其中的一個,而我們在QQ中聊天發表說說則是一個個的線程。 進程和線程的關系圖圖1:進程和線程的關系圖

什么是多線程

在一個應用程序中,同時有多個不同的執行路徑,這就是多線程,舉個例子就是在用微信聊天的時候還去對微信其他部分的東西進行操作。

多線程的優勢

一句話:提高了程序的運行效率。

線程同步和異步

這個問題很好理解,要點就是在線程執行某個請求時,是否需要一段時間返回信息才能繼續往下執行,同步是需要的,異步不需要,它是直接執行廈門的操作,不管其他進程的狀態。如下圖: 同步異步

如何創建線程

創建線程基礎的有兩種方法,一種是繼承thread類,重寫run方法;一種是繼承Runnable接口,重寫run方法;注意啟動一個線程用.start方法,這里需要注意的是與run方法的區別,調用run方法只是正常的調用普通的方法,而.start方法才是啟動一個線程;另外考官可能會問你這兩種方式那種比較好,回答應該是后者實現接口比較好,原因是實現接口的方式還可以繼承其他類,但是我們的類卻只能繼承一個父類(Java類只能繼承一個父類),所以前者會產生局限性。

什么是線程不安全?怎么去解決

就是在多個線程共享同一個數據會受到其他線程的干擾,可能會造成死鎖,程序處于無限等待中。解決辦法是采取線程同步技術,用上鎖(synchronized),讓一個線程執行完了,再讓其他線程執行。上面提到死鎖概念,覺得有必要提一下:

死鎖

就是兩個或兩個以上的線程都在等待對方執行完畢才能繼續往下執行就發生了死鎖,線程處于無限的等待中。 死鎖有四個條件: 禁止搶占 no PReemption 持有和等待 hold and wait 互斥 mutual exclusion 循環等待 circular waiting 線程死鎖 當線程A要去讀取B線程已經刪除的數據的時候,就會出現錯誤。解決死鎖有幾個方法,最簡單的方法:重啟系統,更好的方法是終止一個線程的運行,可以把一個線程或多個線程回滾到前一狀態。 未完待續… (后面會補充線程池,生產者消費者模式等知識,都是基礎需要掌握的內容。)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒙阴县| 南溪县| 晋州市| 长武县| 怀宁县| 太仆寺旗| 宁都县| 秦安县| 长垣县| 万源市| 开江县| 平陆县| 错那县| 甘洛县| 伊宁县| 沁源县| 龙游县| 连城县| 中方县| 仪陇县| 蕲春县| 长治县| 普宁市| 扶沟县| 邢台市| 鹤壁市| 凌云县| 万全县| 伊川县| 壤塘县| 仁怀市| 兰州市| 南投市| 石阡县| 凤台县| 磴口县| 息烽县| 双辽市| 南澳县| 贵定县| 新闻|