线程--线程的sleep

线程的睡眠方法用的是Thread类的静态的方法sleep();

这个方法的函数原型为:

public static void sleep(long millis)
                  throws InterruptedException
也就是说这个方法会抛出InterruptedException异常,抛出异常的时机是这个线程在睡眠期间被打断,那么他就会抛这个异常。
为了测试,引入另一个方法:
public void interrupt()
打断一个线程的当前活动,比如睡眠。
 1 import java.util.*;
 2 
 3 public class TestInterrupt 
 4 {
 5     public static void main(String[] args) 
 6     {
 7         MyThread t = new MyThread();
 8         t.start();
 9         //在这里先让主线程睡10s的时间,防止它过早的打断新线程
10         try
11         {
12             Thread.sleep(10000);
13         }
14         catch (InterruptedException e)
15         {
16         }
17         
18         //这个可以看成是停止线程的方法,也就是让新线程的run方法执行结束
19         //但是过于粗暴,如果这个线程刚好打开了一些资源,那么它将来不及关闭
20         //有人说可以在捕捉到异常后的catch中关闭打开的资源啊,但是最好不要在catch中写自己的业务逻辑
21         //可以用一个blooean的变量控制while循环的执行
22         t.interrupt();
23     }
24 }
25 
26 class MyThread extends Thread
27 {
28     //这里不能在run方法后面写throws InterruptedException,因为这个run方法是重写的,在异常中规定,重写的方法不能抛出比原方法更多的异常
29     public void run()
30     {
31         while(true)
32         {
33             System.out.println("====" + new Date() + "====");
34             try
35             {
36                 Thread.sleep(1000);    
37             }
38             catch (InterruptedException e)
39             {
40                 return;
41             }
42         }
43         
44     }
45 }

 

你可能感兴趣的:(sleep)