最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用sleep方法暫停線程Thread

 更新時(shí)間:2021年12月08日 08:53:49   作者:feigeswjtu  
這篇文章介紹了Java使用sleep方法暫停線程Thread,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

為什么要用sleep,主要是為了暫停當(dāng)前線程,把cpu片段讓出給其他線程,減緩當(dāng)前線程的執(zhí)行。

方法的定義:

public static void sleep(long millis);

    public static native void sleep(long millis) throws InterruptedException;

通過(guò)定義可以看出sleep方法是本地方法,通過(guò)系統(tǒng)調(diào)用暫停當(dāng)前線程,而不是java自己實(shí)現(xiàn)的。

sleep還有一個(gè)重載的方法:

public static void sleep(long millis, int nanos)

實(shí)現(xiàn)如下:

    public static void sleep(long millis, int nanos)
    throws InterruptedException {
        if (millis < 0) {
            throw new IllegalArgumentException("timeout value is negative");
        }

        if (nanos < 0 || nanos > 999999) {
            throw new IllegalArgumentException(
                                "nanosecond timeout value out of range");
        }

        if (nanos >= 500000 || (nanos != 0 && millis == 0)) {
            millis++;
        }

        sleep(millis);
    }

從表面現(xiàn)象上來(lái)看,這個(gè)方法支持納秒級(jí)別的暫定,但是內(nèi)部的實(shí)現(xiàn)最終還是毫秒級(jí)別的執(zhí)行,以500 000納秒作為分割,大于這個(gè)值時(shí),線程在millis的基礎(chǔ)上多sleep 1毫秒,否則還是sleep millis毫秒,當(dāng)然如果millis為0時(shí),會(huì)sleep 1毫秒。

寫(xiě)個(gè)簡(jiǎn)單的demo來(lái)看線程的執(zhí)行:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ThreadTest implements Runnable{
    public static void main(String[] args) throws InterruptedException {
        Thread test1 = new Thread(new ThreadTest());
        Thread test2 = new Thread(new ThreadTest());
        test1.start();
        test2.start();
        test1.sleep(5000);
    }

    @Override
    public void run() {
       for (int i = 0; i < 5; i++){
           System.out.println(i);
       }
    }
}

執(zhí)行結(jié)果:

0
1
2
3
4
0
1
2
3
4
//此處會(huì)暫停5秒
end

值得注意的是:

  • 1. sleep是幫助其他線程獲得運(yùn)行機(jī)會(huì)的最好方法,但是如果當(dāng)前線程獲取到的有鎖,sleep不會(huì)讓出鎖。
  • 2. 線程睡眠到期自動(dòng)蘇醒,并返回到可運(yùn)行狀態(tài)(就緒),不是運(yùn)行狀態(tài)。
  • 3. 優(yōu)先線程的調(diào)用,現(xiàn)在蘇醒之后,并不會(huì)里面執(zhí)行,所以sleep()中指定的時(shí)間是線程不會(huì)運(yùn)行的最短時(shí)間,sleep方法不能作為精確的時(shí)間控制。
  • 3、sleep()是靜態(tài)方法,只能控制當(dāng)前正在運(yùn)行的線程(示例就是這樣調(diào)用的,因?yàn)轭?lèi)對(duì)象可以調(diào)用類(lèi)的靜態(tài)方法)。

到此這篇關(guān)于Java使用sleep方法暫停線程Thread的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之校園宿舍管理系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之校園宿舍管理系統(tǒng)的實(shí)現(xiàn)流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+jsp+javaweb+mysql+ajax實(shí)現(xiàn)一個(gè)校園宿舍管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java中關(guān)于 null 的幾種處理方式詳解

    Java中關(guān)于 null 的幾種處理方式詳解

    這篇文章主要介紹了Java中關(guān)于 null 的幾種處理方式,關(guān)于 null ,你應(yīng)該知道下面這幾件事情來(lái)有效的了解 null ,從而避免很多由 null 引起的錯(cuò)誤,具體細(xì)節(jié)跟隨小編一起學(xué)習(xí)下吧
    2021-10-10
  • 如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能

    如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能

    在做項(xiàng)目時(shí),后端經(jīng)常采用上傳文件組件MultipartFile,下面這篇文章主要給大家介紹了關(guān)于如何基于SpringWeb?MultipartFile實(shí)現(xiàn)文件上傳、下載功能的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • IDEA自動(dòng)清理類(lèi)中未使用的import包的操作方法

    IDEA自動(dòng)清理類(lèi)中未使用的import包的操作方法

    在項(xiàng)目開(kāi)發(fā)中,經(jīng)常會(huì)引入很多未使用的import包,這不僅增加了編譯時(shí)間,還會(huì)使代碼可讀性變差,設(shè)置IDEA自動(dòng)清理未使用的import包,可以提高代碼的可讀性,本文給大家介紹IDEA自動(dòng)清理類(lèi)中未使用的import包的方法,感興趣的朋友一起看看吧
    2024-09-09
  • 一文弄懂Maven依賴(lài)范圍

    一文弄懂Maven依賴(lài)范圍

    本文詳細(xì)介紹了Maven依賴(lài)范圍的概念、應(yīng)用及其在項(xiàng)目構(gòu)建和管理中的重要性,依賴(lài)范圍包括compile、provided、runtime、test和system等類(lèi)型,每種范圍定義了依賴(lài)在不同構(gòu)建階段的可用性和打包行為,感興趣的可以了解一下
    2024-11-11
  • JDK1.6“新“特性Instrumentation之JavaAgent(推薦)

    JDK1.6“新“特性Instrumentation之JavaAgent(推薦)

    這篇文章主要介紹了JDK1.6“新“特性Instrumentation之JavaAgent,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類(lèi):TreeSet

    面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類(lèi):TreeSet

    這篇文章主要介紹了Java TreeSet類(lèi)的簡(jiǎn)單理解和使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Java中的==使用方法詳解

    Java中的==使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中的==使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • 使用Vue+Spring Boot實(shí)現(xiàn)Excel上傳功能

    使用Vue+Spring Boot實(shí)現(xiàn)Excel上傳功能

    這篇文章主要介紹了使用Vue+Spring Boot實(shí)現(xiàn)Excel上傳,需要的朋友可以參考下
    2018-11-11
  • Java Arrays.sort()如何實(shí)現(xiàn)對(duì)int類(lèi)型數(shù)組倒序排序

    Java Arrays.sort()如何實(shí)現(xiàn)對(duì)int類(lèi)型數(shù)組倒序排序

    這篇文章主要介紹了Java Arrays.sort()如何實(shí)現(xiàn)對(duì)int類(lèi)型數(shù)組倒序排序問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評(píng)論

望江县| 双桥区| 论坛| 阳春市| 闻喜县| 定南县| 湛江市| 天柱县| 乌恰县| 孟村| 新疆| 济阳县| 利川市| 灵山县| 黄石市| 石城县| 邹城市| 盐城市| 普兰店市| 鸡泽县| 河北省| 嘉义县| 怀远县| 林西县| 紫阳县| 麻城市| 错那县| 乌兰察布市| 永德县| 开鲁县| 广德县| 崇阳县| 岐山县| 澜沧| 筠连县| 巢湖市| 莱西市| 得荣县| 波密县| 林口县| 丰县|