這篇文章主要講解了“有哪些Java多線程面試題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“有哪些Java多線程面試題”吧!
創(chuàng)新互聯(lián)公司專注于北戴河網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供北戴河營銷型網(wǎng)站建設(shè),北戴河網(wǎng)站制作、北戴河網(wǎng)頁設(shè)計(jì)、北戴河網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開發(fā)服務(wù),打造北戴河網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供北戴河網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1:什么是線程?
輕量級(jí)的進(jìn)程
2:線程的三個(gè)部分是?
處理機(jī)
代碼
數(shù)據(jù)
3:為什么使用多線程
使UI響應(yīng)更快
利用多處理器系統(tǒng)
簡化建模
4:代碼示例:Java中實(shí)現(xiàn)多線程的兩種方式,包括如何定義多線程,如何使用多線程
4.1實(shí)現(xiàn)Runnable接口
class Thread1 implements Runnable{ public void run(){ //run里一般寫一個(gè)while(true)循環(huán) System.out.println(Runnable); } }
4.2繼承Thread
class Thread2 extends Thread{ public void run(){ System.out.println(extends); } }
public class Test{ public static void main(String[] a){ Thread1 r = new Thread1(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); Thread t3 = new Thread2(); t3.start(); } }
5:如何實(shí)現(xiàn)線程的調(diào)度?如何暫停一個(gè)線程的運(yùn)行
調(diào)度用wait和notify
sleep()
6:什么是線程的優(yōu)先級(jí)
判斷哪個(gè)線程先執(zhí)行的級(jí)別
7:簡述sleep方法和wait方法的功能和區(qū)別
sleep是讓線程休眠一段時(shí)間
wait是讓線程掛起
8:什么是守候線程
隱藏在后臺(tái)持續(xù)運(yùn)行的線程
9:什么是臨界資源
指多個(gè)線程共享的資源
10:什么是互斥鎖,Java中如何實(shí)現(xiàn)
用來保證在任一時(shí)刻只能有一個(gè)線程來訪問臨界資源的那個(gè)標(biāo)記
用在對(duì)象前面限制一段代碼的執(zhí)行
用在方法聲明中,表示整個(gè)方法為同步方法。
11:什么是死鎖?如何避免?
如果程序中有多個(gè)線程競爭多個(gè)資源,就可能會(huì)產(chǎn)生死鎖。當(dāng)一個(gè)線程等待
由另一個(gè)線程持有的鎖,而后者正在等待已被第一個(gè)線程持 有的鎖時(shí),就會(huì)
發(fā)生死鎖。
要避免死鎖,應(yīng)該確保在獲取多個(gè)鎖時(shí),在所有的線程中都以相同的順序獲取鎖。
盡量少用臨界資源
12:簡述wait和notify,notifyAll的使用
被鎖定的對(duì)象可以調(diào)用wait()方法,這將導(dǎo)致當(dāng)前線程被阻塞并放棄該對(duì)象
的互斥鎖,即解除了wait()方法的當(dāng)前對(duì)象的鎖定狀態(tài),其 他的線程就有機(jī)
會(huì)訪問該對(duì)象。
notify使等待隊(duì)列上的一個(gè)線程離開阻塞狀態(tài)
notifyAll使等待隊(duì)列上的所有線程離開阻塞狀態(tài)
13:什么是url?基本的格式是?
統(tǒng)一資源定位器
Http://www.163.com:port
14:簡述IP,Port,TCP的基本功能
IP代表網(wǎng)絡(luò)位置
Port代表端口號(hào)
TCP可保證不同廠家生產(chǎn)的計(jì)算機(jī)能在共同網(wǎng)絡(luò)環(huán)境下運(yùn)行,解決異構(gòu)網(wǎng)通信問題,是目前網(wǎng)絡(luò)通信的基本協(xié)議
15:簡述Java網(wǎng)絡(luò)模型的基本功能
描述服務(wù)端和客戶端的連接過程
16:簡述Java網(wǎng)絡(luò)編程究竟做些什么?如何做?
1.建立連接
2.準(zhǔn)備輸出的數(shù)據(jù),流式輸出
3.流式輸入,編程業(yè)務(wù)需要的格式
4.關(guān)閉連接
服務(wù)器分配一個(gè)端口號(hào)。如果客戶請求一個(gè)連接,服務(wù)器使用accept()方法打開socket連接。
客戶在host的port端口建立連接。
服務(wù)器和客戶使用InputStream和OutputStream進(jìn)行通信。
17:代碼示例:基于Socket編程
try { ServerSocket s = new ServerSocket(8888); while (true) { Socket s1 = s.accept(); OutputStream os = s1.getOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeUTF("Hello," +s1.getInetAddress() + "port#" + s1.getPort() + "\nbye!"); dos.close(); s1.close(); } }catch (IOException e) { System.out.println("程序運(yùn)行出錯(cuò):" + e); }
18:代碼示例:基于UDP編程
19:TCP和UDP區(qū)別
TCP能保證傳輸內(nèi)容的完整和準(zhǔn)確,UDP不能
感謝各位的閱讀,以上就是“有哪些Java多線程面試題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)有哪些Java多線程面試題這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!