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ì)釋放鎖
寫(xiě)源碼:
package Demo04;
public class TestSleep implements Runnable{ //使用Runnable方法創(chuàng)建程序線程
private int ticketNums =10; //有10張票
@Override
public void run() { //重寫(xiě)run方法
while (true){ //寫(xiě)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ò)延遲的作用, 可以放大問(wèn)題的可見(jiàn)性以及發(fā)生性
就是 ,有上面重復(fù)的 結(jié)果顯得明顯,即:多線程是不安全的
再寫(xiě)一個(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)通過(guò)本文給大家介紹Java中的system.getProperty()的作用及使用方法,感興趣的朋友跟隨小編一起看看吧2023-05-05
Java 并發(fā)編程學(xué)習(xí)筆記之核心理論基礎(chǔ)
編寫(xiě)優(yōu)質(zhì)的并發(fā)代碼是一件難度極高的事情。Java語(yǔ)言從第一版本開(kāi)始內(nèi)置了對(duì)多線程的支持,這一點(diǎn)在當(dāng)年是非常了不起的,但是當(dāng)我們對(duì)并發(fā)編程有了更深刻的認(rèn)識(shí)和更多的實(shí)踐后,實(shí)現(xiàn)并發(fā)編程就有了更多的方案和更好的選擇。本文是對(duì)并發(fā)編程的核心理論做了下小結(jié)2016-05-05
jdk中動(dòng)態(tài)代理異常處理分析:UndeclaredThrowableException
最近在工作中遇到了報(bào)UndeclaredThrowableException的錯(cuò)誤,通過(guò)查找相關(guān)的資料,終于解決了,所以這篇文章主要給大家介紹了關(guān)于jdk中動(dòng)態(tài)代理異常處理分析:UndeclaredThrowableException的相關(guān)資料,需要的朋友可以參考下2018-04-04
IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決
最近剛開(kāi)始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒(méi)有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下2023-05-05
SpringSecurity實(shí)現(xiàn)自定義登錄接口的詳細(xì)過(guò)程
本文詳細(xì)介紹了如何使用SpringSecurity實(shí)現(xiàn)自定義登錄接口,文章還涉及了對(duì)用戶實(shí)體類的增強(qiáng)以滿足詳細(xì)信息的需求,適合需要深入了解和實(shí)現(xiàn)SpringSecurity自定義登錄功能的開(kāi)發(fā)者,感興趣的朋友跟隨小編一起看看吧2024-10-10
jetbrain?fleet對(duì)標(biāo)vscode實(shí)際操作
Gradle是一個(gè)基于Apache Ant和Apache Maven概念項(xiàng)目自動(dòng)化構(gòu)建開(kāi)源工具,jetbrain家的fleet(已獲得預(yù)覽權(quán)限)直接對(duì)標(biāo)vscode?,?fleet有望超過(guò)vscode嗎?今天我們實(shí)際操作下2021-12-12
maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bi
這篇文章主要給大家介紹了關(guān)于maven依賴包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings的處理方法,這個(gè)問(wèn)題通常是因?yàn)轫?xiàng)目中存在多個(gè)SLF4J的實(shí)現(xiàn)綁定(bindings)導(dǎo)致的沖突,需要的朋友可以參考下2024-02-02
java開(kāi)發(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-10
java利用DFA算法實(shí)現(xiàn)敏感詞過(guò)濾功能
在最近的開(kāi)發(fā)中遇到了敏感詞過(guò)濾,便去網(wǎng)上查閱了很多敏感詞過(guò)濾的資料,在這里也和大家分享一下自己的理解。下面這篇文章主要給大家介紹了關(guān)于java利用DFA算法實(shí)現(xiàn)敏感詞過(guò)濾功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06

