導航:首頁 > 編程語言 > java多線程面試

java多線程面試

發布時間:2022-07-28 17:06:28

1. java面試什麼是多線程

線程定義比較抽象,簡單的說就是一個代碼執行流。許多執行流可以混合在一起由CPU調度。線程是允許各種任務交互執行的方式。

Java的線程在操作系統的實現模式依系統不同而不同,可能是系統級別的進程或線程,但對於程序員來說並沒有影響。

任務交互的一個好處是增加程序響應。如一個界面程序執行一段耗時的資料庫查詢,使用單獨的線程可以讓界面依然響應用戶的其他輸入,而單線程只能等待查詢結束再處理。

JVM以及操作系統會優先處理優先順序別高的線程,但不代表這些線程一定會先完成。設定優先順序只能建議系統更快的處理,而不能強制。

另外,在運行時,並沒有按照函數分界,而是按照機器碼/匯編碼分界。也就是說不保證任何一段代碼是被完整而不打斷的執行的(除非你已經使用同步手段)。正由於如此,各種線程同步的方法應運而生。

2. Java面試如何實現多進程

實現多線程有兩種方式
1.繼承Thread類,覆蓋run方法,通過創建Thread類的子類對象來創建線程,用start方法開啟線程並調用現成的run方法。
2.實現Runnable介面,覆蓋介面中的run方法門線程的任務代碼封裝到run方法中去,通過Thread類創建線程對象,並將Runnable介面的子類對象作為Thread類的構造函數的的參數進行傳遞,然後調用線程對象的start方法開啟線程。
純手打,望採納

3. java面試中經常被問到的問題有哪些

java面試中經常被問到的問題有如下:

1、進程,線程,協程之間的區別是什麼?

簡而言之,進程是程序運行和資源分配的基本單位,一個程序至少有一個進程,一個進程至少有一個線程。進程在執行過程中擁有獨立的內存單元,而多個線程共享內存資源,減少切換次數,從而效率更高。線程是進程的一個實體,是cpu調度和分派的基本單位,是比程序更小的能獨立運行的基本單位。同一進程中的多個線程之間可以並發執行。

2、你了解守護線程嗎?它和非守護線程有什麼區別?

程序運行完畢,jvm會等待非守護線程完成後關閉,但是jvm不會等待守護線程。守護線程最典型的例子就是GC線程。

3、什麼是多線程上下文切換?

多線程的上下文切換是指CPU控制權由一個已經正在運行的線程切換到另外一個就緒並等待獲取CPU執行權的線程的過程。

4、創建兩種線程的方式?他們有什麼區別?

通過實現java.lang.Runnable或者通過擴展java.lang.Thread類。相比擴展Thread,實現Runnable介面可能更優.原因有二:Java不支持多繼承。因此擴展Thread類就代表這個子類不能擴展其他類。而實現Runnable介面的類還可能擴展另一個類。類可能只要求可執行即可,因此繼承整個Thread類的開銷過大。

5、Thread類中的start()和run()方法有什麼區別?

start()方法被用來啟動新創建的線程,而且start()內部調用了run()方法,這和直接調用run()方法的效果不一樣。當你調用run()方法的時候,只會是在原來的線程中調用,沒有新的線程啟動,start()方法才會啟動新線程。

4. java面試題:請用多線程顯示,每三個數字為一組,直到30.


publicclassTest{
publicstaticObjectobj=newObject();
publicstaticvoidmain(String[]args){
newA().start();
newB().start();

}
}

classAextendsThread{
publicvoidrun(){
try{
synchronized(Test.obj){
for(inti=1;i<31;i+=6){
Test.obj.notify();
System.out.println("線程A:"+i);
System.out.println("線程A:"+(i+1));
System.out.println("線程A:"+(i+2));
Test.obj.wait();
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}

classBextendsThread{
publicvoidrun(){
try{
synchronized(Test.obj){
for(inti=4;i<31;i+=6){
Test.obj.notify();
System.out.println("線程B:"+i);
System.out.println("線程B:"+(i+1));
System.out.println("線程B:"+(i+2));
Test.obj.wait();
}
}
}catch(Exceptione){
e.printStackTrace();
}
}
}

5. java 面試 什麼是多線程

多線程是指一個應用程序同時執行多個任務,一般來說一個任務就是一個線程 ,而一個應用程序有一個以上的線程我們稱之為多線程。

補充內容

線程與進程的區別:

舉例說明:

publicclassThreadTest{

publicstaticvoidm1(){

System.out.println("m1");
}

publicstaticvoidm2(){

System.out.println("m2");
}

publicstaticvoidm3(){

m1();
m2();
}

publicstaticvoidmain(String[]args){

m3();
}}

程序中的路徑或者線程也就是main方法(共一條):


6. java面試 談談多線程 ,怎麼回答

就談談你理解的多線程是什麼樣子的,說說多線程的一般使用情況、適用情況和基本的一些函數,怎麼實現多線程,多線程和單線程的區別,就OK了,他要再深問再深入說咯。。。。

7. java電商項目面試官問我高並發多線程怎麼解決

這個很簡單,高並發有多種解決方法:

1、從代碼上分入手,必須得保證代碼沒有冗餘,不要有廢代碼;
2、從伺服器上入手,高並發一台伺服器並發量有限,我們可以採用多台伺服器來分擔壓力;
3、從存儲方便入手,像我們一般高並發但是數據卻可以不用存到資料庫中的,我們就存在內存中,因為讀內存的速度是資料庫的N倍。

8. java有關線程的面試題

線程,你要弄清楚幾個概念:
1、什麼是線程?(進程中的子進程或從主進程中產生的子程序)
2、怎麼創建線程?(繼承了Thread類或實現了Runnable介面的類)
3、線程怎麼運行?(搶佔CPU時間,分片運行)
4、線程中同步的概念?(多個線程訪問同一個對象時排隊和不排隊的問題)
5、線程的生命周期有哪些?(不存在->創建->運行、等待、睡眠、->死亡)
6、死鎖?(A線程中用到B線程的資源,B中同時也用到A,若同時運行AB,在同步的情況下會出現A等B結束,B等A結束,這樣同時無限等待)

9. 什麼是JAVA的多線程

簡單,先回答什麼是線程:即程序的執行路徑,再回答多線程:多線程就是一個程序中有多條不同的執行路徑

JAVA多線程的優點:可以並發的執行多項任務,比如說你瀏覽網頁的同時還可以聽歌

閱讀全文

與java多線程面試相關的資料

熱點內容
量子加密銀行 瀏覽:193
命令方塊獲得指令手機 瀏覽:499
學習結束感言簡短程序員 瀏覽:398
android關機鬧鍾實現 瀏覽:968
滑鼠一鍵打開文件夾設置 瀏覽:161
程序員看過來我想靜靜搞笑視頻 瀏覽:370
curlphp爬蟲 瀏覽:874
python按日期循環 瀏覽:110
php三個等號 瀏覽:760
培訓班出來的程序員解決問題很差 瀏覽:963
程序員那麼可愛25集 瀏覽:753
伺服器地址和ip地址一樣不 瀏覽:664
php中括弧定義數組 瀏覽:602
php列印堆棧 瀏覽:516
華為adb命令行刷機 瀏覽:965
人像攝影pdf 瀏覽:761
解壓文件密碼怎樣重新設置手機 瀏覽:1002
高考指南pdf 瀏覽:695
爬蟲python數據存儲 瀏覽:240
u盤怎麼取消加密 瀏覽:431