Java多線程的sleep休眠的實(shí)現(xiàn)
了解這樣的幾個(gè)概念:
1.sleep指向當(dāng)前線程阻塞的毫秒數(shù)(就是可以讓線程停一會(huì))
2.sleep 存在異常 InterruptedException3.sleep 時(shí)間達(dá)到后線程進(jìn)入就緒狀態(tài)4.sleep 可以模擬網(wǎng)絡(luò)延時(shí),倒計(jì)時(shí)等5.sleep 每一個(gè)對(duì)象都有一個(gè)鎖,sleep 不會(huì)釋放鎖
寫源碼:
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){ //當(dāng)票數(shù)小于等于0 break; //停止循環(huán) } System.out.println(Thread.currentThread().getName()+"-->拿到了第"+ticketNums--+"票"); //輸出信息 } } public static void main(String[] args) { //這是它的主線程 TestSleep ticket = new TestSleep(); //創(chuàng)建對(duì)象 new Thread(ticket,"小王").start(); //啟動(dòng)線程 new Thread(ticket,"小李").start(); new Thread(ticket,"小慧").start(); } }
看結(jié)果:
在這個(gè)結(jié)果當(dāng)中,有重復(fù),但是不明顯
加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秒的時(shí)間 (模擬網(wǎng)絡(luò)延遲) }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(); } }
看結(jié)果:
這樣的重復(fù)會(huì)很多,所以sleep(休眠),起到模擬網(wǎng)絡(luò)延遲的作用, 可以放大問題的可見性以及發(fā)生性
就是 ,有上面重復(fù)的 結(jié)果顯得明顯,即:多線程是不安全的
再寫一個(gè)實(shí)例:
模擬倒計(jì)時(shí):
package Demo04; //模擬倒計(jì)時(shí) 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; } } } }
看結(jié)果
它的顯示結(jié)果:(注意: 1000ms=1秒)
就是它會(huì)從十到一每隔一秒顯示一個(gè)數(shù)字,一直到一
到此這篇關(guān)于Java多線程的sleep休眠的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java多線程sleep休眠內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的system.getProperty()的作用及使用方法
System.getProperty()?方法用于獲取系統(tǒng)屬性的值,該方法接受一個(gè)字符串參數(shù),表示要獲取的系統(tǒng)屬性的名稱,返回值為字符串類型,表示該屬性的值,接下來(lái)通過本文給大家介紹Java中的system.getProperty()的作用及使用方法,感興趣的朋友跟隨小編一起看看吧2023-05-05Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)
編寫優(yōu)質(zhì)的并發(fā)代碼是一件難度極高的事情。Java語(yǔ)言從第一版本開始內(nèi)置了對(duì)多線程的支持,這一點(diǎn)在當(dāng)年是非常了不起的,但是當(dāng)我們對(duì)并發(fā)編程有了更深刻的認(rèn)識(shí)和更多的實(shí)踐后,實(shí)現(xiàn)并發(fā)編程就有了更多的方案和更好的選擇。本文是對(duì)并發(fā)編程的核心理論做了下小結(jié)2016-05-05jdk中動(dòng)態(tài)代理異常處理分析:UndeclaredThrowableException
最近在工作中遇到了報(bào)UndeclaredThrowableException的錯(cuò)誤,通過查找相關(guān)的資料,終于解決了,所以這篇文章主要給大家介紹了關(guān)于jdk中動(dòng)態(tài)代理異常處理分析:UndeclaredThrowableException的相關(guān)資料,需要的朋友可以參考下2018-04-04IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決
最近剛開始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05SpringSecurity實(shí)現(xiàn)自定義登錄接口的詳細(xì)過程
本文詳細(xì)介紹了如何使用SpringSecurity實(shí)現(xiàn)自定義登錄接口,文章還涉及了對(duì)用戶實(shí)體類的增強(qiáng)以滿足詳細(xì)信息的需求,適合需要深入了解和實(shí)現(xiàn)SpringSecurity自定義登錄功能的開發(fā)者,感興趣的朋友跟隨小編一起看看吧2024-10-10jetbrain?fleet對(duì)標(biāo)vscode實(shí)際操作
Gradle是一個(gè)基于Apache Ant和Apache Maven概念項(xiàng)目自動(dòng)化構(gòu)建開源工具,jetbrain家的fleet(已獲得預(yù)覽權(quán)限)直接對(duì)標(biāo)vscode?,?fleet有望超過vscode嗎?今天我們實(shí)際操作下2021-12-12maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bi
這篇文章主要給大家介紹了關(guān)于maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings的處理方法,這個(gè)問題通常是因?yàn)轫?xiàng)目中存在多個(gè)SLF4J的實(shí)現(xiàn)綁定(bindings)導(dǎo)致的沖突,需要的朋友可以參考下2024-02-02java開發(fā)web前端cookie session及token會(huì)話機(jī)制詳解
如果把人體比作一個(gè)web系統(tǒng)的話,cookie、session和token就好像人體的經(jīng)絡(luò)和血管一樣,而web系統(tǒng)中的數(shù)據(jù),就好像人體的血液一樣。血液依靠著血管在人體內(nèi)流動(dòng),就如數(shù)據(jù)根據(jù)cookie和session機(jī)制在web系統(tǒng)中流動(dòng)一樣2021-10-10java利用DFA算法實(shí)現(xiàn)敏感詞過濾功能
在最近的開發(fā)中遇到了敏感詞過濾,便去網(wǎng)上查閱了很多敏感詞過濾的資料,在這里也和大家分享一下自己的理解。下面這篇文章主要給大家介紹了關(guān)于java利用DFA算法實(shí)現(xiàn)敏感詞過濾功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06