Java面試基礎(四)

2021-08-26 04:12:00 字數 1143 閱讀 8412

14、sleep與wait與yield區別:

1)wait是object類的方法,sleep與yield都是thread類的方法。wait呼叫的時候需要注意的是該方法是[color=blue][b]釋放鎖標誌[/b][/color]的,而sleep在呼叫的時候是[color=blue][b]緊緊抱著鎖標誌[/b][/color]的,也就是等他完全執行完成了才可以讓其他執行緒來訪問的

2)sleep 方法使當前執行中的執行緒睡眠一段時間,進入不可執行狀態,這段時間的長短是由程式設定的,[b]yield 方法使當前執行緒讓出 cpu 佔有權[/b],但讓出的時間是不可設定的。實際上,yield()方法對應了如下操作: 先檢測當前是否有相同優先順序的執行緒處於同可執行狀態,如有,則把 cpu 的佔有權交給此執行緒,否則,繼續執行原來的執行緒。所以yield()方法稱為「退讓」,它把執行機會讓給了同等優先順序的其他執行緒。

3)另外,sleep 方法允許較低優先順序的執行緒獲得執行機會,但 yield() 方法執行時,當前執行緒仍處在可執行狀態,所以,不可能讓出較低優先順序的執行緒些時獲得 cpu 佔有權。在乙個執行系統中,如果較高優先順序的執行緒沒有呼叫 sleep 方法,又沒有受到 i/o 阻塞,那麼,較低優先順序執行緒只能等待所有較高優先順序的執行緒執行結束,才有機會執行。

15、forward 和redirect的區別:

2)使用redirect,服務端根據邏輯,傳送乙個狀態碼,告訴瀏覽器重新去請求那個位址.所以位址列顯示的是新的url;

具體的區別:

a、從位址列顯示來說

forward是伺服器請求資源,伺服器直接訪問目標位址的url,把那個url的響應內容讀取過來,然後把這些內容再發給瀏覽器.瀏覽器根本不知道伺服器傳送的內容從**來的,所以它的位址列還是原來的位址.

redirect是服務端根據邏輯,傳送乙個狀態碼,告訴瀏覽器重新去請求那個位址.所以位址列顯示的是新的url.

b、從資料共享來說

forward:**頁面和**到的頁面可以共享request裡面的資料.

redirect:不能共享資料.

c、從運用地方來說

forward:一般用於使用者登陸的時候,根據角色**到相應的模組.

redirect:一般用於使用者登出登陸時返回主頁面和跳轉到其它的**等.

d、從效率來說

forward:高.

redirect:低.

Java 面試基礎知識(四)

1.arraylist與vector的區別 1 兩者都實現了list介面,都是通過陣列實現的 vector是執行緒安全的,而arraylist非執行緒安全。2 當list增加元素時,如果它認為不夠的時候會進行擴容,vector也會,預設情況下是增加原來的一倍的陣列長度,arraylist則增加原來的...

面試java基礎

1.system.out.println 2 2 5 2 2 輸出結果?結果為 4522 在2 2的時候,為4,然後通字串成相加,就會變為字串,就是 45 字串通整型資料相加是字串。於是就是 4522 2.object自帶的方法有哪些?有clone tostring hascode equals n...

Java基礎面試

1.面試題 byte b1 3,b2 4,b b b1 b2 b 3 4 哪句是編譯失敗的呢?為什麼呢?答 第二句,byte不能轉換為int整型。思考題 byte b 130 有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少呢?byte b3 byte 130 system.out.print...