当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Thread.sleep()用法及代码示例


线程类是本质上是程序执行线程的类。它存在于Java.lang包中。线程类包含Sleep()方法。线程类中存在两种Sleep()方法的重载方法,一种方法带有一个自变量,另一种方法带有两个自变量。 sleep()方法用于在特定时间段内停止执行当前线程(无论系统中正在执行的线程),并在该时间段结束后,较早执行的线程再次开始执行。

关于Thread.sleep()方法的要点:

  • 方法每当执行Thread.sleep()函数时,它将始终暂停当前线程的执行。
  • 如果其他任何线程在睡眠时中断,则将抛出InterruptedException。
  • 如果系统忙, 那么线程实际进入睡眠的时间会更多 与过去相比呼唤睡眠方法以及系统 负载少 然后实际睡觉时间的线程将接近那个在调用sleep()方法时传递。

Sleep()方法的语法

  • public static void sleep(long millis)throws InterruptedException   
  • public static void sleep(long millis)throws IllegalArguementException
  • public static void sleep(long millis, int nanos)throws InterruptedException  
  • public static void sleep(long millis, int nanos)throws  IllegalArguementException

Thread.Sleep()方法中传递的参数

  • millis:线程将休眠的持续时间(以毫秒为单位)
  • nanos:这个我们想要的额外时间(以纳秒为单位)线程睡觉。 取值范围是0到999999。

Sleep()的返回类型方法:它不返回任何值,IE睡眠函数的返回类型为void。



具有一个参数的sleep方法是本机方法,即,该方法的实现是用另一种编程语言完成的,而具有两个参数的另一种方法不是本机方法,即,其实现是用Java完成的。这两个sleep方法都是静态的,即我们可以使用Thread类访问它们。两种方法都抛出一个检查异常,即我们可以使用throws关键字或使用try and catch块来处理异常。

我们可以对任何线程使用Thread.Sleep()方法,即可以与主线程或以编程方式创建的任何其他线程一起使用。

  • 对主线程使用Thread.Sleep()方法

Java

// Java Program for sleeping the main thread. 
  
import java.io.*; 
import java.lang.Thread; 
  
class GFG { 
    public static void main(String[] args) 
    { 
        // we can also use throws keyword foloowed by 
        // exception name for throwing the exception 
        
        try { 
            for (int i = 0; i < 5; i++) { 
                
                // it will sleep the main thread for 1 sec 
                // ,each time the for loop runs 
                Thread.sleep(1000); 
                
                // printing the value of the variable 
                System.out.println(i); 
            } 
        } 
        catch (Exception e) { 
            
            // catching the exception 
            System.out.println(e); 
        } 
    } 
}
输出
0
1
2
3
4
  • 对自定义线程使用Thread.Sleep()方法

Java

// Java Program for sleeping the custom thread. 
  
import java.io.*; 
import java.lang.Thread; 
  
class GFG extends Thread { 
  
    public void run() 
    { 
        // thread 0 
  
        // we can also use throws keyword foloowed by 
        // exception name for throwing the exception 
        try { 
            for (int i = 0; i < 5; i++) { 
                
                // it will sleep the main thread for 1 sec 
                // ,each time the for loop runs 
                Thread.sleep(1000); 
                
                // This Thread.sleep() method will sleep the 
                // thread 0. 
                // printing the value of the variable 
                System.out.println(i); 
            } 
        } 
        catch (Exception e) { 
            
            // catching the exception 
            System.out.println(e); 
        } 
    } 
    public static void main(String[] args) 
    { 
        // main thread 
        GFG obj = new GFG(); 
        obj.start(); 
    } 
}
输出
0
1
2
3
4
  • 睡眠时间为负数时发生IllegalArguementException

Java

// Java Program for showing how exception can occur if we 
// pass the negative timeout value. 
  
import java.io.*; 
import java.lang.Thread; 
  
class GFG { 
    public static void main(String[] args) 
    { 
        // we can also use throws keyword foloowed by 
        // exception name for throwing the exception 
        
        try { 
            for (int i = 0; i < 5; i++) { 
                
                // this will throw the 
                // IllegalArgumentException 
                Thread.sleep(-100); 
                
                // printing the value of the variable 
                System.out.println(i); 
            } 
        } 
        catch (Exception e) { 
            
            // catching the exception 
            System.out.println(e); 
        } 
    } 
}
输出
java.lang.IllegalArgumentException:timeout value is negative

相关用法


注:本文由纯净天空筛选整理自lavishgarg26大神的英文原创作品 Thread.sleep() Method in Java With Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。