国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) Java Java面試題 面試官:請(qǐng)你說(shuō)一下sleep()、wait()、join()和yield()的區(qū)別

面試官:請(qǐng)你說(shuō)一下sleep()、wait()、join()和yield()的區(qū)別

Mar 01, 2021 am 10:18 AM
面試

面試官:請(qǐng)你說(shuō)一下sleep()、wait()、join()和yield()的區(qū)別

我們先來(lái)介紹下鎖池與等待池的概念。

首先來(lái)看下鎖池的概念

所有需要競(jìng)爭(zhēng)同步鎖的線程都會(huì)放在鎖池當(dāng)中,比如當(dāng)前對(duì)象的鎖已經(jīng)被其中一個(gè)線程得到,則其它線程需要在這個(gè)鎖池進(jìn)行等待,當(dāng)前面的線程釋放同步鎖侯鎖池中的線程去競(jìng)爭(zhēng)同步鎖,當(dāng)某個(gè)線程得到后會(huì)進(jìn)入就緒隊(duì)列進(jìn)行等待cpu資源分配。

接著來(lái)看看等待池的概念

當(dāng)我們調(diào)用wait() 方法后,線程會(huì)放到等待池中,等待池的線程是不會(huì)去競(jìng)爭(zhēng)同步鎖。只有調(diào)用了notify() 或notifyAll() 后等待池的線程才會(huì)開(kāi)始去競(jìng)爭(zhēng)鎖,notify() 是隨機(jī)從等待池選出一個(gè)線程放到鎖池,而notifyAll() 是將等待池的所有線程放到鎖池當(dāng)中。

  • sleep 是 Thread 類的靜態(tài)本地方法,wait 則是Object的本地方法。

  • sleep 方法不會(huì)釋放lock,但是wait 會(huì)釋放,而且會(huì)加入到等待隊(duì)列中。

sleep就是把cpu的執(zhí)行資格和執(zhí)行權(quán)釋放出去,不再運(yùn)行此線程,當(dāng)定時(shí)事件結(jié)束再取回cpu資源,參與cpu的調(diào)度,獲取到cpu資源后就可以繼續(xù)運(yùn)行了,而如果sleep時(shí)該線程有鎖,那么sleep不會(huì)釋放這個(gè)鎖,而是把鎖帶著進(jìn)入了凍結(jié)狀態(tài),也就是說(shuō)其它需要這個(gè)鎖的線程根本不可能獲取到這個(gè)鎖。也就是說(shuō)無(wú)法執(zhí)行程序,如果在睡眠期間其它線程調(diào)用了這個(gè)線程的interrupt方法,那么這個(gè)線程也會(huì)拋出interruptexception異常返回,這點(diǎn)和wait是一樣的。
  • sleep方法不依賴于同步器synchronized,但是wait需要依賴synchronized關(guān)鍵字。

  • sleep不需要被喚醒(休眠之后退出阻塞),但是wait需要(不指定時(shí)間需要被別人中斷)。

  • sleep一般用于當(dāng)前線程休眠,或者輪詢暫停操作,wait則多用于多線程之間的通信。

  • sleep會(huì)讓出CPU執(zhí)行時(shí)間且強(qiáng)制上下文切換,而wait則不一定,wait后可能還是有機(jī)會(huì)重新競(jìng)爭(zhēng)到鎖繼續(xù)執(zhí)行的。

yield() 執(zhí)行后線程直接進(jìn)入就緒狀態(tài),馬上釋放了cpu的執(zhí)行權(quán),但是依然保留了cpu的執(zhí)行資格,所以由可能cpu下次進(jìn)行線程調(diào)度還會(huì)讓這個(gè)線程獲取到執(zhí)行權(quán)繼續(xù)執(zhí)行。

(學(xué)習(xí)視頻分享:java視頻教程

join() 執(zhí)行后線程進(jìn)入阻塞狀態(tài),例如在線程B中調(diào)用線程A的join() ,那線程B會(huì)進(jìn)入到阻塞隊(duì)列,指導(dǎo)線程A結(jié)束或中斷線程。

public static void main(String[] args) throws InterruptedException {
        Thread t1=new Thread(()->{
            try {
                Thread.sleep(4000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("休眠sleep線程");
        });
        t1.start();
        t1.join();
        System.out.println("線程執(zhí)行完成");
    }

原文鏈接:https://blog.csdn.net/lxn1023143182/article/details/114134498

相關(guān)推薦:java面試題及答案

以上是面試官:請(qǐng)你說(shuō)一下sleep()、wait()、join()和yield()的區(qū)別的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

聊聊如何選擇一個(gè)最好的Node.js Docker鏡像? 聊聊如何選擇一個(gè)最好的Node.js Docker鏡像? Dec 13, 2022 pm 08:00 PM

選擇一個(gè)Node?的Docker鏡像看起來(lái)像是一件小事,但是鏡像的大小和潛在漏洞可能會(huì)對(duì)你的CI/CD流程和安全造成重大的影響。那我們?nèi)绾芜x擇一個(gè)最好Node.js Docker鏡像呢?

如何解決跨域?常見(jiàn)解決方案淺析 如何解決跨域?常見(jiàn)解決方案淺析 Apr 25, 2023 pm 07:57 PM

跨域是開(kāi)發(fā)中經(jīng)常會(huì)遇到的一個(gè)場(chǎng)景,也是面試中經(jīng)常會(huì)討論的一個(gè)問(wèn)題。掌握常見(jiàn)的跨域解決方案及其背后的原理,不僅可以提高我們的開(kāi)發(fā)效率,還能在面試中表現(xiàn)的更加

一文理解JavaScript中的單例模式 一文理解JavaScript中的單例模式 Apr 25, 2023 pm 07:53 PM

JS 單例模式是一種常用的設(shè)計(jì)模式,它可以保證一個(gè)類只有一個(gè)實(shí)例。這種模式主要用于管理全局變量,避免命名沖突和重復(fù)加載,同時(shí)也可以減少內(nèi)存占用,提高代碼的可維護(hù)性和可擴(kuò)展性。

golang框架面試題集錦 golang框架面試題集錦 Jun 02, 2024 pm 09:37 PM

Go框架是一組擴(kuò)展Go內(nèi)置庫(kù)的組件,提供預(yù)制功能(例如Web開(kāi)發(fā)和數(shù)據(jù)庫(kù)操作)。流行的Go框架包括Gin(Web開(kāi)發(fā))、GORM(數(shù)據(jù)庫(kù)操作)和RESTful(API管理)。中間件是HTTP請(qǐng)求處理鏈中的攔截器模式,用于在不修改處理程序的情況下添加身份驗(yàn)證或請(qǐng)求日志記錄等功能。Session管理通過(guò)存儲(chǔ)用戶數(shù)據(jù)來(lái)保持會(huì)話狀態(tài),可以使用gorilla/sessions管理session。

JavaScript怎么判斷數(shù)據(jù)類型?8 種方式分享 JavaScript怎么判斷數(shù)據(jù)類型?8 種方式分享 Feb 16, 2023 pm 02:48 PM

JavaScript怎么判斷數(shù)據(jù)類型?本篇文章給大家分享JS 判斷數(shù)據(jù)類型的 8 種方式,有效幫助工作和面試,面試官看了微微一笑。

聊聊Node中的url模塊和querystring模塊 聊聊Node中的url模塊和querystring模塊 Feb 23, 2023 pm 07:39 PM

url模塊和querystring模塊是非常重要的兩個(gè)URL處理模塊。在做node服務(wù)端的開(kāi)發(fā)時(shí)會(huì)經(jīng)常用到。

100道常見(jiàn)PHP面試題(附解析),增強(qiáng)你的知識(shí)儲(chǔ)備! 100道常見(jiàn)PHP面試題(附解析),增強(qiáng)你的知識(shí)儲(chǔ)備! May 11, 2022 am 10:45 AM

本篇文章給大家整理分享100道常見(jiàn)PHP面試題(附答案分享),帶你梳理基礎(chǔ)知識(shí),增強(qiáng)你的PHP知識(shí)儲(chǔ)備。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

See all articles