华南俳烁实业有限公司

java

當前位置:中華考試網(wǎng) >> java >> java面試題 >> 文章內(nèi)容

java常見面試題及答案:第七部分

來源:中華考試網(wǎng)  [2020年9月20日]  【

  1、Thread類的sleep()方法和對象的wait()方法都可以讓線程暫停執(zhí)行,它們有什么區(qū)別?

  答:sleep()方法(休眠)是線程類(Thread)的靜態(tài)方法,調(diào)用此方法會讓當前線程暫停執(zhí)行指定的時間,將執(zhí)行機會(CPU)讓給其他線程,但是對象的鎖依然保持,因此休眠時間結(jié)束后會自動恢復。wait()是Object類的方法,調(diào)用對象的wait()方法導致當前線程放棄對象的鎖(線程暫停執(zhí)行),進入對象的等待池(wait pool),只有調(diào)用對象的notify()方法(或notifyAll()方法)時才能喚醒等待池中的線程進入等鎖池(lock pool),如果線程重新獲得對象的鎖就可以進入就緒狀態(tài)。

  2、線程的sleep()方法和yield()方法有什么區(qū)別?

  答:① sleep()方法給其他線程運行機會時不考慮線程的優(yōu)先級,因此會給低優(yōu)先級的線程以運行的機會;yield()方法只會給相同優(yōu)先級或更高優(yōu)先級的線程以運行的機會;

 、 線程執(zhí)行sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài),而執(zhí)行yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài);

 、 sleep()方法聲明拋出InterruptedException,而yield()方法沒有聲明任何異常;

 、 sleep()方法比yield()方法(跟操作系統(tǒng)CPU調(diào)度相關(guān))具有更好的可移植性。

  3、當一個線程進入一個對象的synchronized方法A之后,其它線程是否可進入此對象的synchronized方法B?

  答:不能。其它線程只能訪問該對象的非同步方法,同步方法則不能進入。因為非靜態(tài)方法上的synchronized修飾符要求執(zhí)行方法時要獲得對象的鎖,如果已經(jīng)進入A方法說明對象鎖已經(jīng)被取走,那么試圖進入B方法的線程就只能在等鎖池(注意不是等待池哦)中等待對象的鎖。

  4、請說出與線程同步以及線程調(diào)度相關(guān)的方法。

  答:

  - wait():使一個線程處于等待(阻塞)狀態(tài),并且釋放所持有的對象的鎖;

  - sleep():使一個正在運行的線程處于睡眠狀態(tài),是一個靜態(tài)方法,調(diào)用此方法要處理InterruptedException異常;

  - notify():喚醒一個處于等待狀態(tài)的線程,當然在調(diào)用此方法的時候,并不能確切的喚醒某一個等待狀態(tài)的線程,而是由JVM確定喚醒哪個線程,而且與優(yōu)先級無關(guān);

  - notityAll():喚醒所有處于等待狀態(tài)的線程,該方法并不是將對象的鎖給所有線程,而是讓它們競爭,只有獲得鎖的線程才能進入就緒狀態(tài);

預約申請免費聽課

  • 地區(qū):
  • 姓名:
  • 手機:
責編:yangliu1997
  • 會計考試
  • 建筑工程
  • 職業(yè)資格
  • 醫(yī)藥考試
  • 外語考試
  • 學歷考試
常宁市| 峨眉山市| 无为县| 南江县| 台江县| 都匀市| 颍上县| 闻喜县| 聂荣县| 宾阳县| 安达市| 屏东县| 调兵山市| 九寨沟县| 营口市| 灵武市| 罗源县| 全南县| 纳雍县| 临夏市| 城步| 民丰县| 平利县| 旬阳县| 盈江县| 同心县| 皋兰县| 威远县| 景德镇市| 丹阳市| 大安市| 临夏县| 浦东新区| 忻州市| 万源市| 迁西县| 北碚区| 溧水县| 方正县| 南雄市| 蒙阴县|