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

