Java多線程的sleep休眠的實現(xiàn)
了解這樣的幾個概念:
1.sleep指向當前線程阻塞的毫秒數(shù)(就是可以讓線程停一會)
2.sleep 存在異常 InterruptedException3.sleep 時間達到后線程進入就緒狀態(tài)4.sleep 可以模擬網(wǎng)絡延時,倒計時等5.sleep 每一個對象都有一個鎖,sleep 不會釋放鎖
寫源碼:
package Demo04; public class TestSleep implements Runnable{ //使用Runnable方法創(chuàng)建程序線程 private int ticketNums =10; //有10張票 @Override public void run() { //重寫run方法 while (true){ //寫while 循環(huán) if (ticketNums<=0){ //當票數(shù)小于等于0 break; //停止循環(huán) } System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"票"); //輸出信息 } } public static void main(String[] args) { //這是它的主線程 TestSleep ticket = new TestSleep(); //創(chuàng)建對象 new Thread(ticket,"小王").start(); //啟動線程 new Thread(ticket,"小李").start(); new Thread(ticket,"小慧").start(); } }
看結果:
在這個結果當中,有重復,但是不明顯
加sleep 休眠
package Demo04; public class TestSleep implements Runnable{ private int ticketNums =10; @Override public void run() { while (true){ if (ticketNums<=0){ break; } try { Thread.sleep(5); //讓線程睡了5秒的時間 (模擬網(wǎng)絡延遲) }catch (InterruptedException e){ e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"票"); } } public static void main(String[] args) { TestSleep ticket = new TestSleep(); new Thread(ticket,"小王").start(); new Thread(ticket,"小李").start(); new Thread(ticket,"小慧").start(); } }
看結果:
這樣的重復會很多,所以sleep(休眠),起到模擬網(wǎng)絡延遲的作用, 可以放大問題的可見性以及發(fā)生性
就是 ,有上面重復的 結果顯得明顯,即:多線程是不安全的
再寫一個實例:
模擬倒計時:
package Demo04; //模擬倒計時 public class TestSleep02 { public static void main(String[] args) { try { tenDown(); } catch (InterruptedException e) { e.printStackTrace(); } } public static void tenDown() throws InterruptedException { int num = 10; while (true) { Thread.sleep(1000); System.out.println(num--); if (num <= 0) { break; } } } }
看結果
它的顯示結果:(注意: 1000ms=1秒)
就是它會從十到一每隔一秒顯示一個數(shù)字,一直到一
到此這篇關于Java多線程的sleep休眠的實現(xiàn)的文章就介紹到這了,更多相關Java多線程sleep休眠內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中的system.getProperty()的作用及使用方法
System.getProperty()?方法用于獲取系統(tǒng)屬性的值,該方法接受一個字符串參數(shù),表示要獲取的系統(tǒng)屬性的名稱,返回值為字符串類型,表示該屬性的值,接下來通過本文給大家介紹Java中的system.getProperty()的作用及使用方法,感興趣的朋友跟隨小編一起看看吧2023-05-05jdk中動態(tài)代理異常處理分析:UndeclaredThrowableException
最近在工作中遇到了報UndeclaredThrowableException的錯誤,通過查找相關的資料,終于解決了,所以這篇文章主要給大家介紹了關于jdk中動態(tài)代理異常處理分析:UndeclaredThrowableException的相關資料,需要的朋友可以參考下2018-04-04IDEA創(chuàng)建Maven項目后報錯不出現(xiàn)src文件夾的情況解決
最近剛開始學習maven,正準備使用idea創(chuàng)建一個maven項目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項目始終沒有src目錄,下面這篇文章主要給大家介紹了關于IDEA創(chuàng)建Maven項目后報錯不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05SpringSecurity實現(xiàn)自定義登錄接口的詳細過程
本文詳細介紹了如何使用SpringSecurity實現(xiàn)自定義登錄接口,文章還涉及了對用戶實體類的增強以滿足詳細信息的需求,適合需要深入了解和實現(xiàn)SpringSecurity自定義登錄功能的開發(fā)者,感興趣的朋友跟隨小編一起看看吧2024-10-10maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bi
這篇文章主要給大家介紹了關于maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings的處理方法,這個問題通常是因為項目中存在多個SLF4J的實現(xiàn)綁定(bindings)導致的沖突,需要的朋友可以參考下2024-02-02java開發(fā)web前端cookie session及token會話機制詳解
如果把人體比作一個web系統(tǒng)的話,cookie、session和token就好像人體的經(jīng)絡和血管一樣,而web系統(tǒng)中的數(shù)據(jù),就好像人體的血液一樣。血液依靠著血管在人體內(nèi)流動,就如數(shù)據(jù)根據(jù)cookie和session機制在web系統(tǒng)中流動一樣2021-10-10