亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java使用sleep方法暫停線程Thread

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

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

sleep還有一個重載的方法:

public static void sleep(long millis, int nanos)

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

寫個簡單的demo來看線程的執(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
//此處會暫停5秒
end

值得注意的是:

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

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

相關(guān)文章

  • 基于idea把maven工程轉(zhuǎn)換為web項目

    基于idea把maven工程轉(zhuǎn)換為web項目

    這篇文章主要介紹了基于idea把maven工程轉(zhuǎn)換為web項目,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java文本編輯器實現(xiàn)方法詳解

    Java文本編輯器實現(xiàn)方法詳解

    這篇文章主要介紹了Java文本編輯器實現(xiàn)方法,結(jié)合實例形式詳細分析了java文本編輯器結(jié)構(gòu)、原理、布局、實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Java中將一個列表拆分為多個較小列表的三種不同方法

    Java中將一個列表拆分為多個較小列表的三種不同方法

    有時候我們需要將大集合按指定的數(shù)量分割成若干個小集合,這篇文章主要給大家介紹了關(guān)于Java中將一個列表拆分為多個較小列表的三種不同方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Java中List轉(zhuǎn)字符串的5種方法解析

    Java中List轉(zhuǎn)字符串的5種方法解析

    在Java中將一個List轉(zhuǎn)換為字符串有多種方法,下面這篇文章主要給大家介紹了關(guān)于Java中List轉(zhuǎn)字符串的5種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • SpringBoot上傳和下載文件的原理解析

    SpringBoot上傳和下載文件的原理解析

    文件上傳的功能很常見,但是很多人并不清楚文件上傳后的具體原理,接下來通過本文給大家分享SpringBoot上傳和下載文件的原理解析,感興趣的朋友一起看看吧
    2021-07-07
  • Python中scrapy框架的ltem和scrapy.Request詳解

    Python中scrapy框架的ltem和scrapy.Request詳解

    這篇文章主要介紹了Python中scrapy框架的ltem和scrapy.Request詳解,Item是保存爬取數(shù)據(jù)的容器,它的使用方法和字典類似,不過,相比字典,Item提供了額外的保護機制,可以避免拼寫錯誤或者定義字段錯誤,需要的朋友可以參考下
    2023-09-09
  • java課程設(shè)計做一個多人聊天室(socket+多線程)

    java課程設(shè)計做一個多人聊天室(socket+多線程)

    這篇文章主要介紹了我的java課程設(shè)計一個多人聊天室(socket+多線程)本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 詳解JAVA流程控制語句

    詳解JAVA流程控制語句

    這篇文章主要介紹了Java中的流程控制語句,循環(huán)等語句是Java編程中流程控制的基礎(chǔ),需要的朋友可以參考下
    2017-04-04
  • SpringBoot前后端分離實現(xiàn)驗證碼操作

    SpringBoot前后端分離實現(xiàn)驗證碼操作

    驗證碼的功能是防止非法用戶惡意去訪問登錄接口而設(shè)置的一個功能,今天我們就來看看在前后端分離的項目中,SpringBoot是如何提供服務(wù)的
    2022-05-05
  • Java 多線程等待優(yōu)雅的實現(xiàn)方式之Phaser同步屏障

    Java 多線程等待優(yōu)雅的實現(xiàn)方式之Phaser同步屏障

    在JAVA 1.7引入了一個新的并發(fā)API:Phaser,一個可重用的同步barrier。在此前,JAVA已經(jīng)有CyclicBarrier、CountDownLatch這兩種同步barrier,但是Phaser更加靈活,而且側(cè)重于 重用
    2021-11-11

最新評論