精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

Android編程精選 ? 來源:CSDN ? 2023-01-03 11:19 ? 次閱讀

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

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

操作系統資源的分配策略

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

時間片算法

基于時間片算法分配資源的代表就是Unix系統。在時間片算法中,操作系統會維護一個隊列,將所有的進程放入隊列中。然后操作系統會按照隊列中的進程順序為他們分配屬于自己的運行時間,也就是說,操作系統給A進程分配n毫秒時間,那么A進程在本次排隊時只可以運行n毫秒。

當A進程運行完n毫秒后,操作系統不管A是否運行完畢都會把運行權限強行剝奪,交給隊列里面的下一個進程去執行,然后A進程繼續去隊列尾部進行下一次排隊。(這里,如果A在n毫秒之前提前結束或者被阻塞,操作系統會立即收回A的運行權限)

舉個例子:

你去食堂買飯,這種模式就是食堂會強制你去排隊,而且每人只有十分鐘點餐時間,一旦過了這個時間你就要重新去排隊。

搶占式

基于搶占式分配資源的代表是Winodws系統。搶占式的操作系統都是“儒家學派”的,默認每個進程都是“君子”。意思就是:一個進程一旦拿到CPU后,除非它主動放棄CPU權限,不然別的進程是拿不到CPU權限的。

然后操作系統在選取執行權限的時候也不是隨機選的,它會根據優先級和饑餓時間來判定誰更需要CPU權限的。每次一個進程是釋放CPU后,就會進行一次優先級評定。也就是說,如果運氣好,每次都會被選中。

舉個例子:

你去食堂買飯,食堂阿姨看你小伙子挺帥就先給你盛飯。然后給你盛完飯再選一次,又發現你這小伙子越看越順眼,就再給你一碗。

關于Sleep

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

對應到代碼里就是,A最近30min不想再參與資源選舉了,這時它就會sleep(30 * 60 * 1000),然后操作系統就會進行再次選舉,并且未來半小時A不參與選舉。此時當A醒來之后,或許CPU執行權在另一個進程手里。

再說Thread.sleep(0)

假如A執行了一段時間后,突然想起來其他小伙伴可能也需要CPU執行權限,不能光自己一個人霸占這個CPU,但是又沒辦法主動申請再次選舉,就只能退而求其次執行Thread.sleep(0),在A有執行權限的情況下執行,執行后告訴操作系統,我要休息0毫秒,你接下來0毫秒內的選舉就不要選我啦。但是操作系統下次再選舉的時候還是會把A算進去,因為0毫秒已經過了。

總結

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

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4600

    瀏覽量

    92649
  • 操作系統
    +關注

    關注

    37

    文章

    6742

    瀏覽量

    123192
  • 代碼
    +關注

    關注

    30

    文章

    4751

    瀏覽量

    68358

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

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TLV320AIC3254內部中的ADC處理模塊和minidsp到底是什么關系?

    我想請問一下幾個問題: 1.3254內部中的ADC處理模塊和minidsp到底是什么關系,是并列的還是串行關系?還是ADC處理模塊就是minidsp特殊情況下的部分? 2.minidsp的抽取因子該怎么理解,到底怎么使用?
    發表于 10-31 06:02

    請問PCM2903C的溫度范圍到底是多少呢?

    如下圖,PCM2903C的溫度范圍到底是多少呢? 如果用在-25~85℃,是否會出問題?
    發表于 10-14 07:14

    放大器的共模輸入電壓到底是指什么?

    請問放大器的共模輸入電壓到底是指什么?
    發表于 09-19 07:17

    功放和運放到底是什么區別?

    想請問一下功放和運放到底是什么區別,感覺只要接一小負載,運放的輸出電流也可以很大啊?到底有什么區別啊
    發表于 09-10 07:00

    請問LMV772到底是雙電源還是單電源???

    請問LMV772到底是雙電源還是單電源???手冊前面寫的太模糊了。求指教
    發表于 09-09 07:10

    運放的輸入電容到底是什么?

    我想請問一下運放的輸入電容到底是什么?
    發表于 09-04 06:52

    LMH6502的輸入電壓到底是多少?

    LMH6502的輸入電壓到底是多少,我稍微給如大一點點的信號,放大不行還能接受,我衰減都失真,
    發表于 08-27 07:02

    對于STM8的固件庫,到底是怎么對文件進行配置的?

    對于STM8的固件庫,到底是怎么對文件進行配置的?
    發表于 05-17 15:59

    共享單車到底是什么通信原理

    我們經常騎的共享單車到底是什么通信原理,有人了解過嗎? 一、智能車鎖 共享單車最核心的硬件是智能車鎖,主要用于實現控制和定位功能。
    發表于 04-09 10:33 ?814次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理

    在RK3568上安裝RT-Thread,根據板級支持包操作時遇到的疑問求解

    我想在RK3568上安裝RT-Thread,根據板級支持包操作時,遇到了一些疑問,大佬求教! 我已經完成了編譯部分,生成了rtthread.elf與rtthread.bin文件 請問燒錄進SD
    發表于 03-01 06:23

    共享單車到底是什么通信原理?

    我們經常騎的共享單車到底是什么通信原理,有人了解過嗎?下面寶藍小編就帶大家了解下。
    的頭像 發表于 02-25 10:32 ?1342次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理?

    請問M487KMCAN的SRAM到底是128KB還是160K?

    M487KMCAN的SRAM到底是128 KB 還是160K
    發表于 01-16 07:18

    MES的本質到底是什么?

    ?MES的本質到底是什么? ?1.一套生產現場的綜合管理的集成系統。用集成的思想替代原來的設備管理、質量管理、生產排程、DNC、數據采集軟件等車間需要使用的孤立的軟件系統。2. MES在信息化系統中
    發表于 12-07 11:03 ?0次下載

    去耦濾波電容怎么布局擺放,到底是先大后小還是先小后大?

    去耦濾波電容怎么布局擺放,到底是先大后小還是先小后大?
    的頭像 發表于 12-04 15:43 ?2300次閱讀
    去耦濾波電容怎么布局擺放,<b class='flag-5'>到底是</b>先大后小還是先小后大?

    請問AD9684最低采樣率到底是多少?

    關于AD9684最低采樣率,數據手冊有兩處描述,但是不一致。請問AD9684最低采樣率到底是多少?
    發表于 12-04 06:34