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

首頁 Java Java面試題 面試官:請你說sleep()、wait()、join()和yield()的差別

面試官:請你說sleep()、wait()、join()和yield()的差別

Mar 01, 2021 am 10:18 AM
面試

面試官:請你說sleep()、wait()、join()和yield()的差別

我們先來介紹下鎖定池與等待池的概念。

首先來看下鎖定池的概念

所有需要競爭同步鎖定的執(zhí)行緒都會放在鎖定池當中,例如目前物件的鎖定已經(jīng)被其中一個執(zhí)行緒得到,則其它執(zhí)行緒需要在這個鎖池進行等待,當前面的執(zhí)行緒釋放同步鎖侯鎖池中的執(zhí)行緒去競爭同步鎖,當某個執(zhí)行緒得到後會進入就緒佇列進行等待cpu資源分配。

接著來看看等待池的概念

當我們呼叫wait() 方法後,執(zhí)行緒會放到等待池中,等待池的執(zhí)行緒是不會去競爭同步鎖定。只有呼叫了notify() 或notifyAll() 後等待池的線程才會開始去競爭鎖,notify() 是隨機從等待池選出一個線程放到鎖池,而notifyAll() 是將等待池的所有線程放到鎖池當中。

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

  • sleep 方法不會釋放lock,但wait 會釋放,而且會加入到等待佇列。

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

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

  • sleep一般用於目前執(zhí)行緒休眠,或輪詢暫停操作,wait則多用於多執(zhí)行緒之間的通訊。

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

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

(學習影片分享:java影片教學

join() 執(zhí)行後執(zhí)行緒進入阻塞狀態(tài),例如在執(zhí)行緒B中呼叫執(zhí)行緒A的join() ,那線程B會進入到阻塞隊列,指導線程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í)行完成");
    }

原文連結(jié):https://blog.csdn.net/lxn1023143182/article/details/114134498

相關(guān)推薦:java訪談問題及答案

以上是面試官:請你說sleep()、wait()、join()和yield()的差別的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

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

選擇一個Node的Docker映像看起來像是小事,但是映像的大小和潛在漏洞可能會對你的CI/CD流程和安全造成重大的影響。那我們要如何選擇一個最好Node.js Docker映像呢?

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

跨域是開發(fā)中常會遇到的場景,也是面試中常會討論的問題。掌握常見的跨域解決方案及其背後的原理,不僅可以提高我們的開發(fā)效率,還能在面試中表現(xiàn)的更加

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

JS 單例模式是常用的設(shè)計模式,它可以保證一個類別只有一個實例。這種模式主要用於管理全域變量,避免命名衝突和重複加載,同時也可以減少記憶體佔用,提高程式碼的可維護性和可擴展性。

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

Go框架是一組擴充Go內(nèi)建程式庫的元件,提供預製功能(例如網(wǎng)路開發(fā)和資料庫操作)。受歡迎的Go框架包括Gin(Web開發(fā))、GORM(資料庫操作)和RESTful(API管理)。中間件是HTTP請求處理鏈中的攔截器模式,用於在不修改處理程序的情況下新增身份驗證或請求日誌記錄等功能。 Session管理透過儲存使用者資料來保持會話狀態(tài),可以使用gorilla/sessions管理session。

Java JPA 面試題精選:檢視你的持久化框架掌握程度 Java JPA 面試題精選:檢視你的持久化框架掌握程度 Feb 19, 2024 pm 09:12 PM

什麼是JPA?它與JDBC有什麼不同? JPA(JavaPersistenceapi)是一個用於物件關(guān)係映射(ORM)的標準接口,它允許Java開發(fā)者使用熟悉的Java物件來操作資料庫,而無需編寫直接針對資料庫的sql查詢。而JDBC(JavaDatabaseConnectivity)是Java用來連接資料庫的標準API,它需要開發(fā)者使用SQL語句來操作資料庫。 JPA將JDBC封裝起來,為物件-關(guān)聯(lián)映射提供了更方便、更高層級的API,簡化了資料存取操作。在JPA中,什麼是實體(Entity)?實體

JavaScript怎麼判斷資料型別? 8 種方式分享 JavaScript怎麼判斷資料型別? 8 種方式分享 Feb 16, 2023 pm 02:48 PM

JavaScript怎麼判斷資料型別?這篇文章跟大家分享JS 判斷資料類型的 8 種方式,有效幫助工作和麵試,面試官看了微微一笑。

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

url模組和querystring模組是非常重要的兩個URL處理模組。在做node服務(wù)端的開發(fā)時會常用到。

100道常見PHP面試題(附解析),增強你的知識儲備! 100道常見PHP面試題(附解析),增強你的知識儲備! May 11, 2022 am 10:45 AM

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

See all articles