Java中的Thread.sleep()方法及示例

Java的Thread类提供了两个版本的sleep()方法。第一个版本只接受一个参数,而另一个版本接受两个参数。sleep()方法被用于暂停线程的工作一段给定的时间。线程停留在睡眠状态的时间被称为线程的睡眠时间。睡眠时间结束后,线程从离开的地方开始执行。

sleep()方法的语法:

下面是sleep()方法的语法。

public static void sleep(long mls) throws InterruptedException   
public static void sleep(long mls, int n) throws InterruptedException   

sleep()方法的一个参数版本是本地方法,其实现是在另一种编程语言中完成的。而具有两个参数的其他方法不是本地方法,即其实现是在Java中完成的。我们可以通过Thread类来访问sleep()方法,因为sleep()方法的签名包含了static关键字。无论是本地方法还是非本地方法都会抛出一个受检查的异常。因此,在这里可以使用try-catch块或throws关键字。

Thread.sleep()方法可以与任何线程一起使用。这意味着任何其他线程或主线程都可以调用sleep()方法。

参数:

sleep()方法使用了以下参数。

mls:参数mls表示以毫秒为单位的时间。方法sleep()给出了线程休眠的持续时间。

n:它表示程序员或开发人员希望线程保持睡眠状态的额外时间。n的范围是从0到999999。

该方法不返回任何内容。

关于sleep()方法的重要注意事项

无论何时执行Thread.sleep()方法,它总是会暂停当前线程的执行。

如果在当前线程已经处于睡眠模式时另一个线程进行了中断,则会抛出InterruptedException异常。

如果执行线程的系统负载较高,则线程的实际睡眠时间通常比参数中传递的时间长。然而,如果执行sleep()方法的系统负载较轻,则线程的实际睡眠时间几乎等于参数中传递的时间。

Java中sleep()方法的示例:在自定义线程上使用

以下示例演示了如何在自定义线程上使用sleep()方法。

文件名:TestSleepMethod1.java

class TestSleepMethod1 extends Thread{    
 public void run(){    
  for(int i=1;i<5;i++){   
  // 线程将休眠 500 毫秒   
    try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}    
    System.out.println(i);    
  }    
 }    
 public static void main(String args[]){    
  TestSleepMethod1 t1=new TestSleepMethod1();    
  TestSleepMethod1 t2=new TestSleepMethod1();    
     
  t1.start();    
  t2.start();    
 }    
}    

输出:

1
1
2
2
3
3
4
4

正如您所了解的,一次只能执行一个线程。如果您将一个线程睡眠指定的时间,线程调度器会选择另一个线程,依此类推。

Java中sleep()方法的示例:在主线程上使用

文件名:TestSleepMethod2.java

//重要的导入语句  
import java.lang.Thread;  
import java.io.*;  
  
  
public class TestSleepMethod2  
{  
    // 主要方法
public static void main(String argvs[])  
{  
  
try {  
for (int j = 0; j < 5; j++)  
{  
  
// 主线程休眠 1000 毫秒,即 1 秒
// 每当循环运行时  
Thread.sleep(1000);  
  
// 显示变量的值 
System.out.println(j);  
}  
}  
catch (Exception expn)   
{  
// 捕获异常  
System.out.println(expn);  
}  
}  
}  

输出:

0
1
2
3
4

Java中sleep()方法的示例:当睡眠时间为负数时

以下示例在睡眠时间为负数时抛出IllegalArgumentException异常。

文件名:TestSleepMethod3.java

// 重要的导入语句  
import java.lang.Thread;  
import java.io.*;  
  
public class TestSleepMethod3  
{  
// 主要方法  
public static void main(String argvs[])  
{  
// 我们也可以使用 throws 关键字后跟  
// 抛出异常的异常名称  
try   
{  
for (int j = 0; j < 5; j++)   
{  
  
// 它抛出异常 IllegalArgumentException  
// 因为时间是 -ive 即 -100 
Thread.sleep(-100);  
  
// 显示变量的值  
System.out.println(j);  
}  
}  
catch (Exception expn)   
{  
  
// 异常在这里被捕获   
System.out.println(expn);  
}  
}  
}  

输出:

java.lang.IllegalArgumentException: timeout value is negative

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想