关于线程的休眠
关于线程的休眠
CAMELLIA!!! note 目录
关于线程的休眠
一、sleep方法(休眠线程)
静态方法
sleep(long millis)
- 方法签名:
static void sleep(long millis)
- 说明:
- 这是一个静态方法。
- 没有返回值。
- 参数是一个毫秒数。1秒 = 1000毫秒。
- 方法签名:
方法作用
- 让当前线程进入休眠状态,也就是让当前线程放弃占有的CPU时间片,使其进入阻塞状态。
- 具体含义:当前线程不再占用CPU,让给其他线程使用。
- 阻塞时长:根据传入的毫秒参数决定。在指定的时间范围内,当前线程没有权利抢夺CPU时间片。
“当前线程”解释
Thread.sleep(1000);
这行代码在哪个线程中执行,那么当前线程就是那个线程。
关于
run
方法- 在重写
run
方法时,不能在方法声明位置使用throws
抛出异常。
- 在重写
使用
sleep
方法的场景sleep
方法可以用来模拟每隔固定时间调用一次程序。
1 | package com.camellia.thread.ThreadLifecycle; |
二、sleep方法注意事项(面试)
1 | package com.camellia.thread.sleep; |
三、interrupt方法(唤醒线程)
interrupt 是实例方法:
- 哪个实例对象调用
interrupt
方法,就终止哪个线程的睡眠。
- 哪个实例对象调用
底层实现原理:
- 利用了异常处理机制。
工作原理:
- 当调用
interrupt
方法时,如果线程正在睡眠,会抛出InterruptedException
异常。 - 然后捕获异常终止睡眠。
- 当调用
注意事项:
- 如果在
catch
子句中继续抛出异常则不会中断,因为抛出异常等于没处理。 - 可以在
catch
子句中打印异常信息,也可以执行自定义语句。
- 如果在
1 | package com.camellia.thread.sleep; |