1. 獲取線程基本信息的方法

(1) 獲取線程基本信息的方法有哪些?

1. Thread.currentThread()

2. Thread.getName()

3. Thread.SetName()

2. 多線程的安全性問題

(1) 多線程操作共享資源時數據的安全性問題是如何產生的?

1. 一個線程在cpu規定的時間內沒有執行完

2. 該線程就被阻塞了,cpu又被其他線程搶去了

3. 等第一個線程再次搶到cpu執行後一段線程

4. 就會發生數據錯亂的問題

3. 暫停線程執行sleep_yield_join_stop

(1) 暫停線程執行的方法有哪些?

1. Sleep休眠多少秒,線程處於阻塞狀態

2. Yield暫停一次。當前線程暫停一次讓其他線程先去執行,不阻塞,線程進入就緒狀態,如果沒有其他等待執行的線程,那當前線程會馬上執行

3. Join優先執行這個線程,其他線程處於阻塞狀態,該線程執行完畢後再執行其他線程

(2) sleep,yield,join方法將會導致線程進入什麼狀態?

1. sleep進入阻塞狀態

2. Yield進行就緒狀態

3. Join運行狀態

4. 線程的優先順序問題

(1) 設置和獲取線程的優先順序的方法分別是什麼?

1. final int get Priority

2. Final void setPriority

(2) 新創建的線程是否有優先順序?線程的最高優先順序及最低優先順序是什麼?

1. 有默認

2. 10,1

5. 線程同步_具體實現

(1) 在Java中實現線程同步的方法有哪些?

1. 同步代碼塊synchronized(obj){

//中的obj稱為同步監視器}

同步監視器只能是對象,推薦使用共享資源的對象,可以當前的對象this。也可以h是其他對象

2. 同步方法

同步方法的同步監視器為當前對象this

Public synchronized ... 方法名(參數列表){

}

(2) 線程同步實現的前提是什麼?簡述同步方法和同步代碼塊的同步監視器?

1. 多線程共享一個對象

2. 同步方法的同步監視器只能監視當前類

3. 而同步代碼塊的同步監視器可以指定對象監視

6. 死鎖_死鎖的解決辦法

(1) 死鎖產生的原因是什麼?

1. 線程互相等待,導致死鎖

2. 當一組進程中的每個進程都在等待某個事件發生,而只有這組進程中的其他進程才能觸發該事件,這就稱這組進程發生了死鎖。

(2) 如何解決死鎖問題?常用的演算法有什麼?

死鎖產生的4個必要條件

1、互斥:某種資源一次只允許一個進程訪問,即該資源一旦分配給某個進程,其他進程就不能再訪問,直到該進程訪問結束。

2、佔有且等待:一個進程本身佔有資源(一種或多種),同時還有資源未得到滿足,正在等待其他進程釋放該資源。

3、不可搶佔:別人已經佔有了某項資源,你不能因為自己也需要該資源,就去把別人的資源搶過來。

4、循環等待:存在一個進程鏈,使得每個進程都佔有下一個進程所需的至少一種資源。

當以上四個條件均滿足,必然會造成死鎖,發生死鎖的進程無法進行下去,它們所持有的資源也無法釋放。這樣會導致CPU的吞吐量下降。所以死鎖情況是會浪費系統資源和影響計算機的使用性能的。那麼,解決死鎖問題就是相當有必要的了。

避免死鎖 ----- 在使用前進行判斷,只允許不會產生死鎖的進程申請資源

銀行家演算法

7. 生產者消費者模式的實現_1

(1) 簡述生產者和消費者模式的原理?

1.生產者只在倉庫未滿時進行生產,倉庫滿時生產者進程被阻塞;

消費者只在倉庫非空時進行消費,倉庫為空時消費者進程被阻塞

(2) 生產者和消費者模式會導致哪些問題的產生?

1.重複取出和重複生產

8. 生產者消費者模式的實現_2

(1) 線程間通信的原理是什麼?

1. 所有線程都在等待Wait()

2. 如果沒有商品就開啟生產者線程

3. 生產者生產完成後通知消費者來取nofity

4. 消費者取完之後通知生產者生產

(2) 線程間通信的方法有哪些?

1:線程上下文

2:共享內存

3:IPC通信

4:套接字(Socket),不同的機器之間進行通信

9. 網路編程的基本概念

(1) 網路編程的三要素是什麼?

1. .ip地址

2. 埠號

3. 通信協議

(2) 簡述通信協議?

1.你想在網上傳遞數據必須遵守通信協議(傳輸協議)TCP,UDP

10. IP_埠_Socket含義

(1) IP地址的分類?

1. IPv4(點分十進位標識法)和IPv6(十六進位表示法)

(2) 簡述Socket的含義?

1. Socket稱為「套接字」,是計算機之間通信的一種約定或一種方式,通過Socket這種約定,一台計算機可以接收其他計算機的數據,也可以向其他計算機發送數據

2. 每一個客戶端都使用一個Socket對象表示,伺服器端使用ServerSocket等待客戶端鏈接

推薦閱讀:

相关文章