Java線程調(diào)度之線程休眠用法分析
本文實(shí)例分析了Java線程調(diào)度之線程休眠用法。分享給大家供大家參考。具體分析如下:
Java線程調(diào)度是Java多線程的核心,只有良好的調(diào)度,才能充分發(fā)揮系統(tǒng)的性能,提高程序的執(zhí)行效率。
這里要明確的一點(diǎn),不管程序員怎么編寫調(diào)度,只能最大限度的影響線程執(zhí)行的次序,而不能做到精準(zhǔn)控制。
線程休眠的目的是使線程讓出CPU的最簡(jiǎn)單的做法之一,線程休眠時(shí)候,會(huì)將CPU資源交給其他線程,以便能輪換執(zhí)行,當(dāng)休眠一定時(shí)間后,線程會(huì)蘇醒,進(jìn)入準(zhǔn)備狀態(tài)等待執(zhí)行。
線程休眠的方法是Thread.sleep(long millis) 和Thread.sleep(long millis, int nanos) ,均為靜態(tài)方法,那調(diào)用sleep休眠的哪個(gè)線程呢?簡(jiǎn)單說(shuō),哪個(gè)線程調(diào)用sleep,就休眠哪個(gè)線程。
/**
* Java線程:線程的調(diào)度-休眠
*
* @author leizhimin 2009-11-4 9:02:40
*/
public class Test {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Thread t2 = new Thread(new MyRunnable());
t1.start();
t2.start();
}
}
class MyThread1 extends Thread {
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("線程1第" + i + "次執(zhí)行!");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyRunnable implements Runnable {
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println("線程2第" + i + "次執(zhí)行!");
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
運(yùn)行結(jié)果如下:
線程2第0次執(zhí)行! 線程1第0次執(zhí)行! 線程1第1次執(zhí)行! 線程2第1次執(zhí)行! 線程1第2次執(zhí)行! 線程2第2次執(zhí)行! Process finished with exit code 0
從上面的結(jié)果輸出可以看出,無(wú)法精準(zhǔn)保證線程執(zhí)行次序。
相關(guān)文章
Java中實(shí)現(xiàn)在一個(gè)方法中調(diào)用另一個(gè)方法
下面小編就為大家分享一篇Java中實(shí)現(xiàn)在一個(gè)方法中調(diào)用另一個(gè)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
淺談為什么阿里巴巴要禁用Executors創(chuàng)建線程池
這篇文章主要介紹了淺談為什么阿里巴巴要禁用Executors創(chuàng)建線程池,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
springboot實(shí)現(xiàn)配置多環(huán)境yml方式
在SpringBoot項(xiàng)目中,通過(guò)創(chuàng)建不同的YAML配置文件來(lái)實(shí)現(xiàn)多環(huán)境配置是一種常見(jiàn)且有效的方法,這些配置文件包括application.yml、application-dev.yml、application-prod.yml等,分別對(duì)應(yīng)不同的開(kāi)發(fā)環(huán)境,如開(kāi)發(fā)環(huán)境、生產(chǎn)環(huán)境2024-11-11
Java限流方法常見(jiàn)實(shí)現(xiàn)方案(單機(jī)限流和分布式限流)
Java限流用于保護(hù)系統(tǒng)資源,分為單機(jī)(Guava/滑動(dòng)窗口)和分布式(Redis+Lua)方案,核心算法包括固定窗口、令牌桶、漏桶等,推薦使用Sentinel等成熟框架實(shí)現(xiàn)動(dòng)態(tài)流量控制,本文介紹Java限流方法常見(jiàn)實(shí)現(xiàn)方案(單機(jī)限流和分布式限流),感興趣的朋友一起看看吧2025-08-08
java Hibernate save()與persist()區(qū)別
本文章來(lái)給各位同學(xué)介紹一下Hibernate save()與persist()區(qū)別,希望此文章能對(duì)各位同學(xué)對(duì)于Hibernate save()與persist()有所理解2016-01-01
Gradle構(gòu)建基本的Web項(xiàng)目結(jié)構(gòu)
這篇文章主要為大家介紹了Gradle創(chuàng)建Web項(xiàng)目基本的框架結(jié)構(gòu)搭建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

