久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 干(gan)貨分享(xiang) javasleep

干(gan)貨分享(xiang) javasleep 時間:2018-12-25      來源:華清遠見

在提及線程睡眠(sleep)之前,先(xian)要清楚Java中(zhong)關(guan)于線程的概念(nian)。

線(xian)程(cheng)(cheng)(cheng)(cheng)(英語:thread)是(shi)(shi)操作(zuo)系(xi)統能(neng)夠進(jin)行(xing)運算調度(du)的(de)最(zui)小單位(wei)。它被包含在進(jin)程(cheng)(cheng)(cheng)(cheng)之(zhi)中(zhong),是(shi)(shi)進(jin)程(cheng)(cheng)(cheng)(cheng)中(zhong)的(de)實際運作(zuo)單位(wei)。一條線(xian)程(cheng)(cheng)(cheng)(cheng)指的(de)是(shi)(shi)進(jin)程(cheng)(cheng)(cheng)(cheng)中(zhong)一個單一順序(xu)的(de)控制流(liu),一個進(jin)程(cheng)(cheng)(cheng)(cheng)中(zhong)可以并(bing)發多(duo)個線(xian)程(cheng)(cheng)(cheng)(cheng),每條線(xian)程(cheng)(cheng)(cheng)(cheng)并(bing)行(xing)執行(xing)不同(tong)的(de)任務。在Unix System V及SunOS中(zhong)也被稱為輕(qing)(qing)量(liang)進(jin)程(cheng)(cheng)(cheng)(cheng)(lightweight processes),但輕(qing)(qing)量(liang)進(jin)程(cheng)(cheng)(cheng)(cheng)更多(duo)指內核線(xian)程(cheng)(cheng)(cheng)(cheng)(kernel thread),而把用(yong)戶(hu)線(xian)程(cheng)(cheng)(cheng)(cheng)(user thread)稱為線(xian)程(cheng)(cheng)(cheng)(cheng)。

線程(cheng)是(shi)獨立(li)調(diao)度(du)和分派(pai)的(de)基本單位。線程(cheng)可以為(wei)操作系統內核(he)調(diao)度(du)的(de)內核(he)線程(cheng),如Win32線程(cheng);由用戶(hu)進程(cheng)自行調(diao)度(du)的(de)用戶(hu)線程(cheng),如Linux平臺的(de)POSIX Thread;或者由內核(he)與用戶(hu)進程(cheng),如Windows 7的(de)線程(cheng),進行混合調(diao)度(du)。

同一進(jin)(jin)程(cheng)中(zhong)的多(duo)條線(xian)程(cheng)將共享該進(jin)(jin)程(cheng)中(zhong)的全部系統資源,如虛擬地址空間,文件描述(shu)符和(he)信號處理等(deng)等(deng)。但同一進(jin)(jin)程(cheng)中(zhong)的多(duo)個線(xian)程(cheng)有各(ge)自的調用棧(zhan)(call stack),自己(ji)的寄存器環境(register context),自己(ji)的線(xian)程(cheng)本地存儲(thread-local storage)。

一個進程(cheng)可以有(you)很多線(xian)程(cheng),每條線(xian)程(cheng)并行執行不同的任務。

在多核(he)或多CPU,或支(zhi)持Hyper-threading的CPU上使用(yong)(yong)多線(xian)程(cheng)(cheng)程(cheng)(cheng)序設(she)計(ji)(ji)的好處是顯而易見,即(ji)提高了程(cheng)(cheng)序的執(zhi)(zhi)行(xing)吞(tun)吐(tu)率。在單CPU單核(he)的計(ji)(ji)算(suan)機上,使用(yong)(yong)多線(xian)程(cheng)(cheng)技術,也可以(yi)把進程(cheng)(cheng)中(zhong)負責I/O處理、人機交互而常被(bei)阻塞的部(bu)分(fen)(fen)與密集計(ji)(ji)算(suan)的部(bu)分(fen)(fen)分(fen)(fen)開來(lai)執(zhi)(zhi)行(xing),編(bian)寫專(zhuan)門(men)的workhorse線(xian)程(cheng)(cheng)執(zhi)(zhi)行(xing)密集計(ji)(ji)算(suan),從而提高了程(cheng)(cheng)序的執(zhi)(zhi)行(xing)效率。

簡(jian)單說,線程(cheng)可以理解為程(cheng)序(xu)中每一條單獨(du)運行的程(cheng)序(xu)鏈路。

Java程序(xu)默認是(shi)有一個線程的(de),也稱之(zhi)為主線程。比如main方(fang)法(fa)所在的(de)線程就是(shi)主線程,我(wo)們(men)寫的(de)代碼(ma)會依(yi)次的(de)執行,如下(xia),每次循環都會打印時間戳:

javasleep,java開發

運(yun)行結果如下:

javasleep,java開發

,可以發(fa)現(xian),程(cheng)序(xu)(xu)在不到1ms的(de)時間內順序(xu)(xu)執行了(le)每(mei)一次(ci)循環。

那么線程(cheng)(cheng)在執行的過程(cheng)(cheng)中(zhong)能(neng)不能(neng),停止(zhi)下來呢?

最簡單的方式就是使用線(xian)程的休(xiu)眠,也(ye)就是sleep方法。

睡眠的(de)意思為,當前線程(cheng)占用cpu不(bu)放,但是什么事情也不(bu)做。

現(xian)在我(wo)們(men)更改上面(mian)的程(cheng)序(xu),讓循環每(mei)次執行的時候都睡(shui)眠一秒(miao)鐘。調用方式(shi)如下:

javasleep,java開發

這個(ge)(ge)方法(fa)是Thread類的(de)(de)一(yi)個(ge)(ge)靜態方法(fa),會(hui)檢測(ce)所(suo)在的(de)(de)當前的(de)(de)線程,并睡眠一(yi)段時間(jian),參數(shu)為睡眠的(de)(de)時常(chang)(單位:毫(hao)秒)。

但是(shi)發現有異常(chang)的拋出,使(shi)用異常(chang)處(chu)理,如(ru)下:

javasleep,java開發

異常類型為InterruptedException,什么時候會拋出呢?

當前(qian)線程的對象(xiang)如(ru)果(guo)在睡眠過程中,調(diao)用了(le)interrupt方(fang)法,可以停止(zhi)睡眠,并拋出InterruptedException異常。

現(xian)在(zai)我們,運行上面的程序,觀察(cha)結果:

javasleep,java開發

 是不是每(mei)隔(ge)一秒鐘就輸出了一次呢?至此(ci)關于(yu)Java的sleep方法就講完了。

上一篇:C語言指針

下一篇:ARM:函數指針

熱(re)點文章推薦
華(hua)清學員就業榜單
高(gao)薪學(xue)員經驗分(fen)享
熱點新(xin)聞(wen)推薦
前(qian)臺專線:010-82525158 企業培訓洽談(tan)專(zhuan)線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部