javasleep線程
㈠ java的線程的sleep()方法是否佔用CPU
不會。
sleep()使當前線程進入停滯狀態(阻塞當前線程),讓出CUP的使用、目的是不讓當前線程獨自霸佔該進程所獲的CPU資源,以留一定時間給其他線程執行的機會。所以不會佔用cpu。
㈡ Java線程中的sleep方法作用是啥,啥時候用此方法
sleep(毫秒數)是Thread類的靜態方法。
使用時:Thread.sleep(毫秒數);
如Thread.sleep(1000);該線程睡眠1秒鍾,之間此線程什麼都不做。
等1秒鍾之後,繼續餘下代碼執行。
不過線程是沒有保證的。也許1秒鍾之後,該線程沒有轉為可運行狀態,也是可能的。
㈢ java中的sleep和wait的區別
sleep和wait的區別:
1、sleep的意思是:睡,睡覺,睡眠。
2、wait的意思是:等候,推遲,延緩等待,耽擱,伺候用餐。
拓展資料
sleep的用法
1、They were exhausted from lack of sleep
由於缺乏睡眠,他們非常疲憊。
2、During the car journey, the baby slept
坐車來的路上,寶寶睡著了。
3、I think he may be ready for a sleep soon.
我想他也許很快就要睡一覺了。
4、I can't get to sleep with all that singing.
那些歌聲攪得我無法入睡。
5、I didn't lose too much sleep over that investigation.
我並不太擔心那個調查。
wait
1、I walk to a street corner and wait for the school bus
我走到街角等校車。
2、There'll be a car waiting for you
會有輛汽車等你。
3、I want to talk to you, but it can wait
我想和你談談,但可以晚點再說。
4、If you think this all sounds very exciting, just wait until you read the book
如果你覺得所有這些聽起來令人興奮,那就等著去讀這本書吧。
5、'Wait a minute!' he broke in. 'This is not giving her a fair hearing!'
「等一下,」他插嘴說,「這沒有給她一個公平的解釋機會!」
㈣ Java多線程中sleep方法中參數為負數和正數有什麼區別
首先這個參數是必須>=0的,如果輸入負數會拋出異常:
java.lang.IllegalArgumentException: timeout value is negative
再看看源碼中這個方法的注釋
* Causes the currently executing thread to sleep (temporarily cease
* execution) for the specified number of milliseconds, subject to
* the precision and accuracy of system timers and schelers. The thread
* does not lose ownership of any monitors.
大概翻譯過來意思就是
當前線程休眠(暫時中止執行)指定數值(毫秒)的時長,當前線程僅僅是休眠,並不會釋放臨界資源鎖(如果有的話)
㈤ java線程的sleep和yield的區別
1、sleep()
使當前線程(即調用該方法的線程)暫停執行一段時間,讓其他線程有機會繼續執行,但它並不釋放對象鎖。也就是說如果有synchronized同步快,其他線程仍然不能訪問共享數據。注意該方法要捕捉異常。
例如有兩個線程同時執行(沒有synchronized)一個線程優先順序為MAX_PRIORITY,另一個為MIN_PRIORITY,如果沒有Sleep()方法,只有高優先順序的線程執行完畢後,低優先順序的線程才能夠執行;但是高優先順序的線程sleep(500)後,低優先順序就有機會執行了。
總之,sleep()可以使低優先順序的線程得到執行的機會,當然也可以讓同優先順序、高優先順序的線程有執行的機會。
2、join()
join()方法使調用該方法的線程在此之前執行完畢,也就是等待該方法的線程執行完畢後再往下繼續執行。注意該方法也需要捕捉異常。
3、yield()
該方法與sleep()類似,只是不能由用戶指定暫停多長時間,並且yield()方法只能讓同優先順序的線程有執行的機會。
4、wait()和notify()、notifyAll()
這三個方法用於協調多個線程對共享數據的存取,所以必須在synchronized語句塊內使用。synchronized關鍵字用於保護共享數據,阻止其他線程對共享數據的存取,但是這樣程序的流程就很不靈活了,如何才能在當前線程還沒退出synchronized數據塊時讓其他線程也有機會訪問共享數據呢?此時就用這三個方法來靈活控制。
wait()方法使當前線程暫停執行並釋放對象鎖標示,讓其他線程可以進入synchronized數據塊,當前線程被放入對象等待池中。當調用notify()方法後,將從對象的等待池中移走一個任意的線程並放到鎖標志等待池中,只有鎖標志等待池中線程能夠獲取鎖標志;如果鎖標志等待池中沒有線程,則notify()不起作用。
notifyAll()則從對象等待池中移走所有等待那個對象的線程並放到鎖標志等待池中
㈥ java中thread.sleep是什麼意思
sleep()方法是Thread類裡面的,主要的意義就是讓當前線程停止執行,讓出cpu給其他的線程,但是不會釋放對象鎖資源以及監控的狀態,當指定的時間到了之後又會自動恢復運行狀態。
wait()方法是Object類裡面的,主要的意義就是讓線程放棄當前的對象的鎖,進入等待此對象的等待鎖定池,只有針對此對象調動notify方法後本線程才能夠進入對象鎖定池准備獲取對象鎖進入運行狀態。