中文字幕av高清_国产视频一二区_男女羞羞羞视频午夜视频_成人精品一区_欧美色视_在线视频这里只有精品

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  應(yīng)聘面試  >  Java面試題  > java面試題:java知識點合集(七)

java面試題:java知識點合集(七)

來源:千鋒教育
發(fā)布人:wjy
時間: 2022-07-11 17:12:00 1657530720

  一. JVM 對 Java 的原生鎖做了哪些優(yōu)化?

  1. 自旋鎖

  在線程進(jìn)行阻塞的時候,先讓線程自旋等待一段時間,可能這段時間其它線程已經(jīng)解鎖,這時就無需讓線程再進(jìn)行阻塞操作了。 自旋默認(rèn)次數(shù)是10次。

  2. 自適應(yīng)自旋鎖

  自旋鎖的升級,自旋的次數(shù)不再固定,由前一次自旋次數(shù)和鎖的擁有者的狀態(tài)決定。

  3. 鎖消除

  在動態(tài)編譯同步代碼塊的時候,JIT編譯器借助逃逸分析技術(shù)來判斷鎖對象是否只被一個線程訪問,而沒有其他線程,這時就可以取消鎖了。

  4. 鎖粗化

  當(dāng)JIT編譯器發(fā)現(xiàn)一系列的操作都對同一個對象反復(fù)加鎖解鎖,甚至加鎖操作出現(xiàn)在循環(huán)中,此時會將加鎖同步的范圍粗化到整個操作系列的外部。

  鎖粒度:不要鎖住一些無關(guān)的代碼。

  鎖粗化:可以一次性執(zhí)行完的不要多次加鎖執(zhí)行。

java面試題:java知識點合集(七)

  二. 為什么wait()、notify()和 notifyAll()必須在同步方法或者同步塊中被調(diào)用?

  Java中,任何對象都可以作為鎖,并且 wait(),notify()等方法用于等待對象的鎖或者喚醒線程,在 Java 的線程中并沒有可供任何對象使用的鎖,所以任意對象調(diào)用方法一定定義在Object類中。

  wait(), notify()和 notifyAll()這些方法在同步代碼塊中調(diào)用。

  有的人會說,既然是線程放棄對象鎖,那也可以把wait()定義在Thread類里面啊,新定義的線程繼承于Thread類,也不需要重新定義wait()方法的實現(xiàn)。然而,這樣做有一個非常大的問題,一個線程完全可以持有很多鎖,你一個線程放棄鎖的時候,到底要放棄哪個鎖?當(dāng)然了,這種設(shè)計并不是不能實現(xiàn),只是管理起來更加復(fù)雜。

  綜上所述,wait()、notify()和notifyAll()方法要定義在Object類中。

  三. Java 如何實現(xiàn)多線程之間的通訊和協(xié)作?

  可以通過中斷 和 共享變量的方式實現(xiàn)線程間的通訊和協(xié)作。

  比如說最經(jīng)典的生產(chǎn)者-消費者模型。當(dāng)隊列滿時,生產(chǎn)者需要等待隊列有空間才能繼續(xù)往里面放入商品,而在等待的期間內(nèi),生產(chǎn)者必須釋放對臨界資源(即隊列)的占用權(quán)。因為生產(chǎn)者如果不釋放對臨界資源的占用權(quán),那么消費者就無法消費隊列中的商品,就不會讓隊列有空間,那么生產(chǎn)者就會一直無限等待下去。因此,一般情況下,當(dāng)隊列滿時,會讓生產(chǎn)者交出對臨界資源的占用權(quán),并進(jìn)入掛起狀態(tài)。然后等待消費者消費了商品,然后消費者通知生產(chǎn)者隊列有空間了。同樣地,當(dāng)隊列空時,消費者也必須等待,等待生產(chǎn)者通知它隊列中有商品了。這種互相通信的過程就是線程間的協(xié)作。

  Java中線程通信協(xié)作的最常見的兩種方式:

  syncrhoized加鎖的線程的Object類的wait()/notify()/notifyAll()

  ReentrantLock類加鎖的線程的Condition類的await()/signal()/signalAll()

  通過管道進(jìn)行線程間通信:

  字節(jié)流;

  字符流

  四. Thread 類中的 yield 方法有什么作用?

  yield()應(yīng)該做的是讓當(dāng)前運行線程回到可運行狀態(tài),以允許具有相同優(yōu)先級的其他線程獲得運行機會。因此,使用yield()的目的是讓相同優(yōu)先級的線程之間能適當(dāng)?shù)妮嗈D(zhuǎn)執(zhí)行。但是,實際中無法保證yield()達(dá)到讓步目的,因為讓步的線程還有可能被線程調(diào)度程序再次選中。

  結(jié)論:yield()從未導(dǎo)致線程轉(zhuǎn)到等待/睡眠/阻塞狀態(tài)。在大多數(shù)情況下,yield()將導(dǎo)致線程從運行狀態(tài)轉(zhuǎn)到可運行狀態(tài),但有可能沒有效果。

  更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學(xué)更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
面向?qū)ο缶幊痰奶卣魇鞘裁?請解釋每個特征

答案:面向?qū)ο缶幊痰奶卣靼ǎ悍庋b(Encapsulation):封裝是將相關(guān)的數(shù)據(jù)和方法組合在一起形成類的機制。它可以隱藏內(nèi)部實現(xiàn)細(xì)節(jié),只暴露必要的...詳情>>

2023-07-18 13:56:00
容器是什么?如何理解容器

  容器(Container)是一個廣泛的概念,指的是一種可以容納其他元素或?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)或抽象概念。在計算機科學(xué)中,容器的概念經(jīng)常出現(xiàn)在數(shù)據(jù)結(jié)...詳情>>

2023-05-08 13:41:00
主站蜘蛛池模板: 激情97| 欧美三级电影在线播放 | 蜜桃在线视频 | 久久免费精品 | 断背山在线 | 欧美一区二区三区精品 | 日韩乱码中文字幕 | 久久久免费电影 | 新超碰97| 精品一区二区三区四区 | 在线免费观看黄色 | 久在线观看 | 99爱视频 | 国产成人免费在线观看视频 | 亚洲精品午夜电影 | 国产精品永久 | 可以在线看的黄色网址 | 黄色毛片看看 | 中文字幕在线一区 | 亚洲视频一区二区三区四区 | 日韩视频一区在线观看 | 久久精品网 | 亚洲一区中文字幕 | 亚洲精品一区二区三区 | 蜜桃久久av | 日韩欧美一区二区三区视频 | 九九九九九九精品 | 精品毛片在线 | 久久久久亚洲精品 | 毛片免费视频 | 国产精品久久久久久久久久妞妞 | 亚洲精品三级 | 久久女人 | 女人口述交换啪啪高潮过程 | 一区 | 成人欧美一区二区三区色青冈 | 久久久久999 | 精品亚洲一区二区三区 | 精品亚洲永久免费精品 | 亚洲成av人片在线观看 | 国产精品色网站 |