线程休眠
sleep( 时间 )
指定当前线程阻塞的毫秒数- sleep存在异常
InterruptedException
- sleep时间到达后,线程进入就绪状态
- sleep可以模拟网络延时,倒计时等等
- 每一个对象都有一个锁,sleep不会释放锁
线程休眠可以应用在许多地方,例如:模拟网络延迟、模拟倒计时、
代码演示
模拟网络延迟
线程休眠可以放大问题的发生性。
例如下边的例子:
1 |
public class TestThread4 implements Runnable{ |
不使用线程休眠那么运行结果如下。好像挺正常的。
1 |
小明----拿到了第10张票~ |
在TestThread4的run方法中添加线程休眠,模拟延时。添加代码如下:
1 |
Thread.sleep(200);//模拟延时 |
1 |
public class TestThread4 implements Runnable{ |
运行结果:
1 |
Pete----拿到了第9张票~ |
发现问题:多个线程操作一个资源时,会导致线程不安全,数据紊乱。
模拟倒计时
使用Thread.sleep(1000);
让线程休眠一秒。
1 |
//线程休眠,模拟倒计时 |
运行结果:
1 |
10 |
打印时间
使用Thread.sleep(1000);
让线程休眠一秒。每秒钟打印一次系统时间。
1 |
public class TestSleep { |
运行结果:
1 |
... |