亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

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

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

Mar 01, 2021 am 10:18 AM
面試

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

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

首先來看下鎖池的概念

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

接著來看看等待池的概念

當我們調用wait() 方法后,線程會放到等待池中,等待池的線程是不會去競爭同步鎖。只有調用了notify() 或notifyAll() 后等待池的線程才會開始去競爭鎖,notify() 是隨機從等待池選出一個線程放到鎖池,而notifyAll() 是將等待池的所有線程放到鎖池當中。

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

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

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

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

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

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

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

(學習視頻分享:java視頻教程

join() 執(zhí)行后線程進入阻塞狀態(tài),例如在線程B中調用線程A的join() ,那線程B會進入到阻塞隊列,指導線程A結束或中斷線程。

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

相關推薦:java面試題及答案

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(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)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
聊聊如何選擇一個最好的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ā)中經(jīng)常會遇到的一個場景,也是面試中經(jīng)常會討論的一個問題。掌握常見的跨域解決方案及其背后的原理,不僅可以提高我們的開發(fā)效率,還能在面試中表現(xiàn)的更加

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

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

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

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

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

什么是JPA?它與JDBC有什么區(qū)別?JPA(JavaPersistenceapi)是一個用于對象關系映射(ORM)的標準接口,它允許Java開發(fā)者使用熟悉的Java對象來操作數(shù)據(jù)庫,而無需編寫直接針對數(shù)據(jù)庫的sql查詢。而JDBC(JavaDatabaseConnectivity)是Java用于連接數(shù)據(jù)庫的標準API,它需要開發(fā)者使用SQL語句來操作數(shù)據(jù)庫。JPA將JDBC封裝起來,為對象-關系映射提供了更方便、更高級別的API,簡化了數(shù)據(jù)訪問操作。在JPA中,什么是實體(Entity)?實體

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模塊是非常重要的兩個URL處理模塊。在做node服務端的開發(fā)時會經(jīng)常用到。

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

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

See all articles