91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Thread.sleep(0)到底是個(gè)什么騷操作?

Android編程精選 ? 來源:CSDN ? 2023-01-03 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天看到一段有意思的代碼:Thread.sleep(0),下面就來分析一下這串看似無用的代碼到底有沒有用。

Thread.sleep(0)到底是個(gè)什么騷操作,這睡0毫秒和不睡有什么區(qū)別嗎?

操作系統(tǒng)資源的分配策略

想要去了解多線程,就先要去了解操作系統(tǒng)中資源的不同分配策略在操作系統(tǒng)中,CPU資源的分配策略有多種,下面就拿兩種最為典型的策略舉例:

時(shí)間片算法

基于時(shí)間片算法分配資源的代表就是Unix系統(tǒng)。在時(shí)間片算法中,操作系統(tǒng)會(huì)維護(hù)一個(gè)隊(duì)列,將所有的進(jìn)程放入隊(duì)列中。然后操作系統(tǒng)會(huì)按照隊(duì)列中的進(jìn)程順序?yàn)樗麄兎峙鋵儆谧约旱倪\(yùn)行時(shí)間,也就是說,操作系統(tǒng)給A進(jìn)程分配n毫秒時(shí)間,那么A進(jìn)程在本次排隊(duì)時(shí)只可以運(yùn)行n毫秒。

當(dāng)A進(jìn)程運(yùn)行完n毫秒后,操作系統(tǒng)不管A是否運(yùn)行完畢都會(huì)把運(yùn)行權(quán)限強(qiáng)行剝奪,交給隊(duì)列里面的下一個(gè)進(jìn)程去執(zhí)行,然后A進(jìn)程繼續(xù)去隊(duì)列尾部進(jìn)行下一次排隊(duì)。(這里,如果A在n毫秒之前提前結(jié)束或者被阻塞,操作系統(tǒng)會(huì)立即收回A的運(yùn)行權(quán)限)

舉個(gè)例子:

你去食堂買飯,這種模式就是食堂會(huì)強(qiáng)制你去排隊(duì),而且每人只有十分鐘點(diǎn)餐時(shí)間,一旦過了這個(gè)時(shí)間你就要重新去排隊(duì)。

搶占式

基于搶占式分配資源的代表是Winodws系統(tǒng)。搶占式的操作系統(tǒng)都是“儒家學(xué)派”的,默認(rèn)每個(gè)進(jìn)程都是“君子”。意思就是:一個(gè)進(jìn)程一旦拿到CPU后,除非它主動(dòng)放棄CPU權(quán)限,不然別的進(jìn)程是拿不到CPU權(quán)限的。

然后操作系統(tǒng)在選取執(zhí)行權(quán)限的時(shí)候也不是隨機(jī)選的,它會(huì)根據(jù)優(yōu)先級(jí)和饑餓時(shí)間來判定誰更需要CPU權(quán)限的。每次一個(gè)進(jìn)程是釋放CPU后,就會(huì)進(jìn)行一次優(yōu)先級(jí)評(píng)定。也就是說,如果運(yùn)氣好,每次都會(huì)被選中。

舉個(gè)例子:

你去食堂買飯,食堂阿姨看你小伙子挺帥就先給你盛飯。然后給你盛完飯?jiān)龠x一次,又發(fā)現(xiàn)你這小伙子越看越順眼,就再給你一碗。

關(guān)于Sleep

拿搶占式來說。去食堂吃飯,阿姨看小伙子挺不錯(cuò),三番五次的給你盛飯,但是你已經(jīng)吃飽了,這時(shí)候你就會(huì)告訴阿姨我吃飽了,接下來半小時(shí)不要再給我盛飯了。

對(duì)應(yīng)到代碼里就是,A最近30min不想再參與資源選舉了,這時(shí)它就會(huì)sleep(30 * 60 * 1000),然后操作系統(tǒng)就會(huì)進(jìn)行再次選舉,并且未來半小時(shí)A不參與選舉。此時(shí)當(dāng)A醒來之后,或許CPU執(zhí)行權(quán)在另一個(gè)進(jìn)程手里。

再說Thread.sleep(0)

假如A執(zhí)行了一段時(shí)間后,突然想起來其他小伙伴可能也需要CPU執(zhí)行權(quán)限,不能光自己一個(gè)人霸占這個(gè)CPU,但是又沒辦法主動(dòng)申請(qǐng)?jiān)俅芜x舉,就只能退而求其次執(zhí)行Thread.sleep(0),在A有執(zhí)行權(quán)限的情況下執(zhí)行,執(zhí)行后告訴操作系統(tǒng),我要休息0毫秒,你接下來0毫秒內(nèi)的選舉就不要選我啦。但是操作系統(tǒng)下次再選舉的時(shí)候還是會(huì)把A算進(jìn)去,因?yàn)?毫秒已經(jīng)過了。

總結(jié)

Thread.sleep(0)不光有用,而且有奇效,對(duì)于想做老好人的進(jìn)程可以調(diào)用一次,讓操作系統(tǒng)再次進(jìn)行選舉。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4785

    瀏覽量

    98155
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7405

    瀏覽量

    129387
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4971

    瀏覽量

    74051

原文標(biāo)題:Thread.sleep(0)到底是個(gè)什么騷操作?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MOS管到底是什么?和三極管、繼電器有什么本質(zhì)區(qū)別?

    MOS管到底是什么?和三極管、繼電器有什么本質(zhì)區(qū)別?在電子設(shè)備的“心臟”部位,藏著許多默默工作的“開關(guān)選手”。它們操控著電流的通斷,決定著設(shè)備的效率與穩(wěn)定性。其中,MOS管作為近年來高頻
    的頭像 發(fā)表于 01-07 13:46 ?619次閱讀
    MOS管<b class='flag-5'>到底是</b>什么?和三極管、繼電器有什么本質(zhì)區(qū)別?

    IGBT到底是什么?-從名稱入手來帶您了解

    對(duì)于工作需要用到IGBT、但從未專業(yè)學(xué)習(xí)過IGBT的人來說, IGBT到底是什么、它為什么叫IGBT、它的核心關(guān)鍵詞是什么、要怎么理解它 等一系列問題并無法一次性在某個(gè)地方獲取到,都需要查閱大量的資料,學(xué)習(xí)大量的基礎(chǔ)才能有個(gè)初步的了解。 為了讓更多的人在更少的時(shí)間內(nèi)掌握I
    的頭像 發(fā)表于 11-25 17:38 ?1649次閱讀
    IGBT<b class='flag-5'>到底是</b>什么?-從名稱入手來帶您了解

    請(qǐng)問Keil中的map文件到底是什么意思?

    Keil中的map文件到底是什么意思?里面是如何進(jìn)行相關(guān)執(zhí)行操作
    發(fā)表于 11-25 06:59

    單片機(jī)和嵌入式,到底是什么關(guān)系?

    的關(guān)系:什么是單片機(jī)?什么是嵌入式?它們到底是不是一回事?先說說大家最先聽說的那個(gè)詞——單片機(jī)(MCU)。單片機(jī),全稱是MicrocontrollerUnit,顧名思
    的頭像 發(fā)表于 11-14 10:28 ?1626次閱讀
    單片機(jī)和嵌入式,<b class='flag-5'>到底是</b>什么關(guān)系?

    單片機(jī)的差分信號(hào)到底是什么?

    差分信號(hào)到底是什么?通俗來講,就是驅(qū)動(dòng)端發(fā)送兩個(gè)等值、反相的信號(hào),接收端通過比較這兩個(gè)電壓的差值來判斷邏輯狀態(tài)“0”還是“1”。 差分信號(hào)的產(chǎn)生是由輸入源發(fā)出信號(hào)后經(jīng)過緩沖器和倒相器
    發(fā)表于 11-12 06:44

    RT_Thread Studio到底是用什么工具構(gòu)建的?Scons還是Cmake?

    ;../rt-thread/libcpu/arm/common/div0.c\" ../rt-thread/src/thread.c: In function \'_
    發(fā)表于 10-10 07:49

    使用rt-thread studio ,配置某對(duì)GPIO為串口,比如配置PA0與PA1 為uart1 ;如何操作?

    請(qǐng)教一下,使用rt-thread studio ,配置某對(duì)GPIO為串口,比如配置PA0與PA1 為uart1 ;如何操作? 我在rt-thread studio中,已經(jīng)寫好測試的串口
    發(fā)表于 09-11 07:50

    IEC 到底是什么?為什么它能影響全球?

    IEC 到底是什么?為什么它能影響全球?
    的頭像 發(fā)表于 09-04 17:07 ?3644次閱讀

    【好書推薦】RT-Thread第20本相關(guān)書籍!《嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理與應(yīng)用》| 技術(shù)集結(jié)

    01內(nèi)容簡介ContentSummary本書為讀者提供了一個(gè)全面、系統(tǒng)的RT-Thread學(xué)習(xí)指南,旨在幫助初學(xué)者及有經(jīng)驗(yàn)的開發(fā)者掌握RT-Thread實(shí)時(shí)操作系統(tǒng)和STM32嵌入式微
    的頭像 發(fā)表于 08-24 10:05 ?1066次閱讀
    【好書推薦】RT-<b class='flag-5'>Thread</b>第20本相關(guān)書籍!《嵌入式實(shí)時(shí)<b class='flag-5'>操作</b>系統(tǒng)RT-<b class='flag-5'>Thread</b>原理與應(yīng)用》| 技術(shù)集結(jié)

    RT-Thread 遇上 Rust:安全內(nèi)核 RusT-Thread 的誕生

    大家好,我們是中國科學(xué)技術(shù)大學(xué)操作系統(tǒng)原理與設(shè)計(jì)(H)課oooooS小組。這個(gè)項(xiàng)目是我們的課程大作業(yè):參考RT-Thread架構(gòu),使用Rust搭建一個(gè)原生的嵌入式操作系統(tǒng)內(nèi)核。初識(shí)Ru
    的頭像 發(fā)表于 08-02 11:03 ?3568次閱讀
    RT-<b class='flag-5'>Thread</b> 遇上 Rust:安全內(nèi)核 RusT-<b class='flag-5'>Thread</b> 的誕生

    晶振的 “負(fù)載電容” 到底是什么

    負(fù)載電容,到底是什么? 負(fù)載電容,簡單來說,是指晶振的兩條引線連接IC塊內(nèi)部及外部所有有效電容之和,我們可以將其看作晶振片在電路中串接的電容。從更專業(yè)的角度講,它是為了使晶振能夠在其標(biāo)稱頻率下穩(wěn)定
    的頭像 發(fā)表于 07-25 16:26 ?1102次閱讀

    請(qǐng)問編譯純r(jià)tos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?

    編譯純r(jià)tos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?
    發(fā)表于 07-11 07:22

    【直播預(yù)告】《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡介

    直播預(yù)告直播主題:《實(shí)時(shí)操作系統(tǒng)應(yīng)用技術(shù)—基于RT-Thread與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡介開放時(shí)間:2025年5月29日(周四)20:00主講老師:王宜懷課程類型:視頻直播觀看平臺(tái)
    的頭像 發(fā)表于 05-26 17:50 ?1285次閱讀
    【直播預(yù)告】《實(shí)時(shí)<b class='flag-5'>操作</b>系統(tǒng)應(yīng)用技術(shù)—基于RT-<b class='flag-5'>Thread</b>與ARM的編程實(shí)踐》教學(xué)脈絡(luò)及資源簡介

    智能盒子到底是什么東西?昇騰310深度測評(píng):為何能成為行業(yè)新寵?

    讓人摸不著頭腦的“智能盒子”。各位搞技術(shù)、搞工程的朋友,咱們?cè)诠ぷ髦惺遣皇墙?jīng)常聽到“智能盒子”這個(gè)說法?每次聽到這個(gè)詞,我猜很多人心里都在犯嘀咕:這東西到底是個(gè)啥玩意兒?難道就是個(gè)裝了點(diǎn)智能軟件的普通盒子?它
    的頭像 發(fā)表于 04-27 10:46 ?1915次閱讀
    智能盒子<b class='flag-5'>到底是</b>什么東西?昇騰310深度測評(píng):為何能成為行業(yè)新寵?

    一文給你講透!DA板卡到底是什么?它和主板又有哪些不同?

    大家好,我是老王,在電子行業(yè)干了十幾年,今天我就用“大白話”給大家講講DA板卡到底是啥,它和咱們常說的“主板”有啥區(qū)別。文章里會(huì)穿插一些表格和實(shí)際案例,保證你讀完不僅能懂,還能跟朋友吹牛!
    的頭像 發(fā)表于 04-24 16:48 ?2572次閱讀
    一文給你講透!DA板卡<b class='flag-5'>到底是</b>什么?它和主板又有哪些不同?