Thread.sleep() & SystemClock.sleep()

本文对比分析了Java中的Thread.sleep()函数与Android平台的SystemClock.sleep()函数在处理线程延时时的区别及应用场景,特别强调了SystemClock.sleep()在中断事件处理上的优势。

Thread.sleep()是java提供的函数。在调用该函数的过程中可能会发生InterruptedException异常。

SystemClock.sleep()是android提供的函数。在调用该函数的过程中不会发生InterruptedException异常,中断事件将要被延迟直到下一个中断事件。

SystemClock.sleep(millis) is a utility function very similar to Thread.sleep(millis), but it ignores InterruptedException. Use this function for delays if you do not use Thread.interrupt(), as it will preserve the interrupted state of the thread.

### 关于 `SystemClock.sleep` 方法 在 Android 开发中,`SystemClock.sleep(long millis)` 是一个用于线程休眠的方法。它会让当前线程暂停指定的时间(以毫秒为单位),类似于 Java 中的 `Thread.sleep(long millis)`[^4]。 以下是关于该方法的一些重要细节: #### 方法签名 ```java public static void sleep(long millis) ``` - 参数 `millis` 表示线程将要休眠的毫秒数。 - 如果参数小于等于零,则不会发生任何延迟操作。 #### 使用场景 1. **定时任务**:当需要让某个任务延时执行时可以使用此方法。 2. **模拟网络请求或其他耗时操作**:通过引入人为延迟来测试应用的行为。 3. **节省资源**:某些情况下可以通过短暂休眠减少 CPU 的占用率。 需要注意的是,在主线程上调用 `SystemClock.sleep()` 可能会导致界面卡顿甚至 ANR(Application Not Responding),因此建议仅在线程池或者后台服务中调用此类阻塞函数[^5]。 #### 示例代码 下面是一个简单的例子展示如何利用 `SystemClock.sleep` 实现基本功能: ```java import android.os.SystemClock; public class SleepExample { public static void main(String[] args) { long startTime = System.currentTimeMillis(); // 打印开始时间戳 System.out.println("Start Time: " + startTime); // 让程序休眠两秒钟 SystemClock.sleep(2000); // 获取结束后的系统时间并打印出来 long endTime = System.currentTimeMillis(); System.out.println("End Time after sleeping : "+endTime+" ms"); } } ``` 上述代码片段展示了如何使用 `SystemClock.sleep` 来创建一个短暂停留效果,并记录前后的时间差值以便验证实际等待时长是否接近预期设定值[^6]。 尽管如此,考虑到用户体验以及现代移动操作系统对于性能的要求日益提高,推荐尽可能采用更高效的方式代替传统意义上的“忙等”,比如 Handler 和 Looper 结合机制或是 CountDownTimer 类型工具类来进行倒计时控制等等[^7]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值