java面试宝典 多线程,《java面试宝典》之java多线程面试题
1:什么是線程?
輕量級的進程
2:線程的三個部分是?
處理機
代碼
數據
3:為什么使用多線程
使UI響應更快
利用多處理器系統
簡化建模
4:代碼示例:Java中實現多線程的兩種方式,包括如何定義多線程,如何使用多線程
4.1實現Runnable接口
class?Thread1?implements?Runnable{
public?void?run(){
//run里一般寫一個while(true)循環
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:如何實現線程的調度?如何暫停一個線程的運行
調度用wait和notify
sleep()
6:什么是線程的優先級
判斷哪個線程先執行的級別
7:簡述sleep方法和wait方法的功能和區別
sleep是讓線程休眠一段時間
wait是讓線程掛起
8:什么是守候線程
隱藏在后臺持續運行的線程
9:什么是臨界資源
指多個線程共享的資源
10:什么是互斥鎖,Java中如何實現
用來保證在任一時刻只能有一個線程來訪問臨界資源的那個標記
用在對象前面限制一段代碼的執行
用在方法聲明中,表示整個方法為同步方法。
11:什么是死鎖?如何避免?
如果程序中有多個線程競爭多個資源,就可能會產生死鎖。當一個線程等待
由另一個線程持有的鎖,而后者正在等待已被第一個線程持 有的鎖時,就會
發生死鎖。
要避免死鎖,應該確保在獲取多個鎖時,在所有的線程中都以相同的順序獲取鎖。
盡量少用臨界資源
12:簡述wait和notify,notifyAll的使用
被鎖定的對象可以調用wait()方法,這將導致當前線程被阻塞并放棄該對象
的互斥鎖,即解除了wait()方法的當前對象的鎖定狀態,其 他的線程就有機
會訪問該對象。
notify使等待隊列上的一個線程離開阻塞狀態
notifyAll使等待隊列上的所有線程離開阻塞狀態
13:什么是url?基本的格式是?
統一資源定位器
Http://www.163.com:port
14:簡述IP,Port,TCP的基本功能
IP代表網絡位置
Port代表端口號
TCP可保證不同廠家生產的計算機能在共同網絡環境下運行,解決異構網通信問題,是目前網絡通信的基本協議
15:簡述Java網絡模型的基本功能
描述服務端和客戶端的連接過程
16:簡述Java網絡編程究竟做些什么?如何做?
1.建立連接
2.準備輸出的數據,流式輸出
3.流式輸入,編程業務需要的格式
4.關閉連接
服務器分配一個端口號。如果客戶請求一個連接,服務器使用accept()方法打開socket連接。
客戶在host的port端口建立連接。
服務器和客戶使用InputStream和OutputStream進行通信。
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("程序運行出錯:"?+?e);
}
18:代碼示例:基于UDP編程
19:TCP和UDP區別
TCP能保證傳輸內容的完整和準確,UDP不能
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java面试宝典 多线程,《java面试宝典》之java多线程面试题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生网乐购分期信用卡怎么分期
- 下一篇: 31省市上半年财政收入公布,多地不到千亿